2015-09-22 46 views
4

在文档中,我看到您可以为独特的规则设置连接,这非常棒。然而,存在似乎并不遵循相同的逻辑。以此为例:Laravel Validation unique/exists with different database connection

$rules = [ 
    'username'   => 'required|max:40|unique:user', 
    'name'    => 'sometimes|required', 
    'email'   => 'required|email|max:255|unique:int.user', 
    'password'   => 'sometimes|required|confirmed|min:6', 
    'password_current' => 'sometimes|required' 
]; 

唯一的规则在这种情况下起作用。它使用我的数据库连接,名为'int'并调用用户表。然而,当规则被颠倒,像这样:

$rules['email'] = 'required|email|max:255|exists:int.user'; 

我得到这个错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'int.user' doesn't exist (SQL: select count(*) as aggregate from int.user where email = [email protected])

它试图调用的int.user表,而不是使用INT数据库连接。

是否有一个原因存在不以同样的方式独特?谢谢。

+0

我不知道原因,但没有'存在'的连接参数。根据文档:'存在:table_name,field_name' – Iamzozo

+1

它在最新版本'L5.1.17' – Razor

回答

6

而不是使用连接名称,您可以尝试使用在“int”连接中定义的直接数据库名称。面临类似的问题,这些方式为我工作。像

$rules['email'] = 'required|email|max:255|exists:DB_Name.user'; 
+1

工作。所有者需要将其标记为可接受的答案。 – gthuo

相关问题