我正在尝试获取数据库中与应用程序相关的信息。
每个申请有一个申请人。
每个应用程序有一只小狗。
我用这样一个雄辩的问题来回答一个观点:
$active_applications = Application::with('applicant', 'puppy')->where('kennel_id', '=', $user_kennel->id)->get();
我在我的应用模型中定义了一些关系,比如:
public function puppy(){
return $this->belongsTo('App\Puppy');
}
public function applicant(){
return $this->belongsTo('App\User');
}
当视图加载时,我能够获得与“puppy”相关的信息。它能正确地检索。然而,申请人保持无效。
在我的applications表中有一个名为“user\ id”的列,我希望它能使用该列中的值来搜索users表“id”,并检索有关该用户的信息。但是,它保持为空。以下是有关变量的dd():
我是不是漏掉了什么明显的东西?为什么它要取回一个而不是另一个?
编辑:小狗表
2条答案
按热度按时间vyswwuz21#
请改为尝试以下行:
据我所知,多个“with”应该作为数组传递。
也要调整关系
fhg3lkii2#
你的亲戚错了-
如果不将外键作为参数传递,laravel将查找
method name
+'_id'
. 因此,在你的情况下,拉威尔正在寻找列applicant_id
在你的申请表里。所以,要得到结果有两种方法-
1) 您需要更改方法名称-
2) 传递外键作为第二个参数-
laravel 5.6文件-belongsto
如果是一对多(逆)关系-
eloquent通过检查relationship方法的名称并在方法名称后面加上一个“\”和主键列的名称来确定默认的外键名称。
如果是一对一的关系-
eloquent通过检查relationship方法的名称并在方法名称后面加上\u id来确定默认的外键名称。
查看laravel文档了解更多详细信息