laravel 中无法获取关系数据
Posted
技术标签:
【中文标题】laravel 中无法获取关系数据【英文标题】:cannot get the relationship data in laravel 【发布时间】:2020-06-03 03:59:45 【问题描述】:这是我的功能
public function show($id)
$newproject = Newproject::find($id);
$data = [
'name' => $newproject->user->name
];
return $data;
新项目模型
public function user()
return $this->hasOne(User::class,'user_id' ,'id');
总是报错
message: "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.user_id' in 'where clause' (SQL: select * from `users` where `users`.`user_id` = 1 and `users`.`user_id` is not null limit 1)"
exception: "Illuminate\Database\QueryException"
file: "C:\xampp\htdocs\larastart\vendor\laravel\framework\src\Illuminate\Database\Connection.php"
line: 669
请帮我解决我的问题。
【问题讨论】:
你可以发布用户和新项目的专栏吗? 请分享您的表结构 我认为 Newproject 属于 User 更有意义,那么您将需要 newprojects 表中的 user_id 列。 【参考方案1】:检查关系one-to-one reference
foreign_key user_id
在 newprojects 表中,你需要建立这样的关系:
用户模型:
public function newproject()
return $this->hasOne(Newproject::class,'user_id');
新项目模型:
public function user()
return $this->belongsTo(User::class);
【讨论】:
【参考方案2】:我觉得应该是这样的,
public function user()
return $this->hasOne(User::class,'id' ,'user_id');
这意味着用户表的id
与当前模型的user_id
列匹配。如果您根据 laravel 有正确的命名约定,那么您不需要传递这个额外的参数。
Laravel hasOne relation
希望对你有帮助:)
【讨论】:
【参考方案3】:在我的模型中发现问题
在用户模型中
public function newproject()
return $this->belongsTo(Newproject::class,'user_id','id');
在新项目模型中
public function user()
return $this->hasOne(User::class,'id' , 'user_id');
谢谢大家
【讨论】:
以上是关于laravel 中无法获取关系数据的主要内容,如果未能解决你的问题,请参考以下文章
无法在工匠自定义命令 Laravel 5.4 中获取模型关系