【发布时间】:2018-01-11 23:39:24
【问题描述】:
我试图在我的数据库中的两个表之间保持关系。
用户表:
Id User_id Name
联系人表:
Id User_Id contacts
我正在联系人表中保存多个联系人。现在我想检索保存到 User_ID 的所有联系人。为此,我正在尝试建立 hasOne 关系,但我收到以下代码的错误,有人可以让我知道我做错了什么吗?我正在关注官方文档。
用户模型:
class users extends Model
{
protected $table = "users";
public function contacts()
{
return $this->hasOne('App\contacts','User_Id');
}
}
联系人型号:
class contacts extends Model
{
public $table = "contacts";
public function Users(){
return $this->belongsTo('App\Users','User_id');
}
}
控制器:
public function eloquentget(){
$contacts = Users::find(1)->contacts->first();
return response()->json($contacts,200);
}
当我在邮递员中尝试此代码时,我得到一个异常:
ErrorException
Trying to get property of non-object
我做错了什么?任何帮助将不胜感激。
【问题讨论】:
-
为什么用户表上同时存在
id和User_Id?此外,您选择的名称,特别是非标准情况下,您应该考虑遵循 Laravel 建议 w.r.t.命名 -
代码运行后,您可能希望codereview.stackexchange.com 上的人员运行它,以获取有关@apokryfos 建议的命名约定和表结构的一些反馈。您可能应该改变一些事情以使您将来的生活更轻松。
-
我正在使用联系人表中的 id 来编辑单独的联系人。因为我有多个使用相同的 user_id。
-
您从 5.3 更新到 5.4 了吗?我有类似的问题:stackoverflow.com/questions/44994022/…