Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 忽略Laravel primaryKey覆盖-查询返回未知列错误_Php_Laravel_Primary Key_Laravel 5.5 - Fatal编程技术网

Php 忽略Laravel primaryKey覆盖-查询返回未知列错误

Php 忽略Laravel primaryKey覆盖-查询返回未知列错误,php,laravel,primary-key,laravel-5.5,Php,Laravel,Primary Key,Laravel 5.5,我正在使用一个数据库,其中id列命名为user\u id 我已经在用户模型中设置了$primaryKey覆盖,但它仍在查找id。当用户模型扩展Authenticatable时,它将被忽略。Authenticatable扩展了模态,所以不应该成为问题,对吗 我见过很多线程,其中primaryKey覆盖不起作用,但没有任何帮助 访问用户时出错: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select coun

我正在使用一个数据库,其中id列命名为user\u id

我已经在用户模型中设置了$primaryKey覆盖,但它仍在查找id。当用户模型扩展Authenticatable时,它将被忽略。Authenticatable扩展了模态,所以不应该成为问题,对吗

我见过很多线程,其中primaryKey覆盖不起作用,但没有任何帮助

访问用户时出错:

Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select count(*) as aggregate from `members` where `email` = user@gmail.com and `id` <> 1804)
更新生成错误:

public function rules()
{
    $user = Auth::user();
    return [
        'email' => [
            'required',
            'email',
            Rule::unique($user->getTable())->ignore($user->getKey()),
        ],
        'first_name' => 'required',
        'last_name' => 'required',
    ];
}
DB列:

Name | Type  |  Attributes  | Null | Extra 
user_id (PrimaryKey) | int(60) | Unsigned | No | AUTO_INCREMENT

sql语句看起来像是唯一验证规则将生成的内容。如果主键不是id,它有一个语法来指定主键

如果表使用的主键列名不是id,则可以在调用ignore方法时指定列名:

'email' => Rule::unique('users')->ignore($user->id, 'user_id')

来源:,在强制唯一规则忽略给定ID的段落下。

请显示生成错误的代码。我们可以从数据库中查看列类型吗?@Klav我认为您显示的查询不会生成此SQL select count*作为来自成员的聚合,其中电子邮件=user@gmail.comid 1804Ahh你说得对,看起来这是验证-唯一的其他事情。UpdatedIt很有趣,在OP将验证代码添加到他的问题前1分钟,你用OP的验证代码发布了答案。谢谢,就是这样。所以我需要在这个表使用的所有规则中添加这个唯一的规则?
'email' => Rule::unique('users')->ignore($user->id, 'user_id')