laravel - Laravel - 尝试保存数据时插入语句中的列发生变化
问题描述
我正在做一个 Laravel 项目,但在尝试保存数据时遇到了问题。这是我收到的错误消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_user_id' in 'field list' (SQL: insert into link_user_accounts (account_id, user_user_id, updated_at, created_at) 值 (1, 6, 2019-12-30 20:32: 54、2019-12-30 20:32:54))
我期待看到以下插入语句:
insert into link_user_account(account_id, user_id) values(val1, val2)
但在这种情况下,user_id
不知何故被重命名为user_user_id
楷模
- 帐户
- 用户
- 链接帐户用户
用户控制器:
public function store(Request $request)
{
$account_id = Auth::user()->account_id;
$user = new User();
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->practice_number = $request->practice_number;
$user->save();
$user_account = new LinkUserAccount();
$user_account->account_id = $account_id;
$user->link_user_account()->save($user_account);
用户模型关系
public function link_user_account()
{
return $this->hasOne(LinkUserAccount::class);
}
账户模型关系
public function link_user_account()
{
return $this->hasOne(LinkUserAccount::class);
}
LinkUserAccount 关系
public function user()
{
return $this->belongsTo(User::class, 'account_id', 'user_id');
}
public function account()
{
return $this->belongsTo(Account::class, 'account_id');
}
解决方案
在LinkUserAccount模型上,删除user_id
另一个键:
public function user()
{
return $this->belongsTo(User::class); // It will automatically go to id on User
}
你有它的方式,在另一个关键参数中,它告诉 Laravel在User模型上user_id
寻找,而不是,它结合包含作为 FK 和稍微不寻常的命名约定(LinkUserAccount),可能把它弄糊涂了,到了寻找的地步。user_id
id
account_id
user_user_id
推荐阅读
- c# - 使用 PuppeteerSharp 从包含链接到 Azure Blob 存储的图像的网页生成 PDF 文件
- php - 重定向问题 PHP
- typescript - Typescript reducer 不接受类型`string | 空`
- iframe - 每日动态获取 iframe 视频
- linux - 使用 php-fpm 增加 EC2 网络服务器 httpd 的限制
- liquibase - Liquibase:程序回滚
- javascript - 从 api json 返回的 VueJs 特殊渲染
- javascript - 控制台日志不是购物变量我希望它显示
- javascript - 菜单切换功能在电子商务网站上不起作用
- sql - 在存储过程中将输入参数作为值传递