Php 忽略Laravel primaryKey覆盖-查询返回未知列错误
我正在使用一个数据库,其中id列命名为user\u id 我已经在用户模型中设置了$primaryKey覆盖,但它仍在查找id。当用户模型扩展Authenticatable时,它将被忽略。Authenticatable扩展了模态,所以不应该成为问题,对吗 我见过很多线程,其中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
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')