使用Laravel,我创建了一个主表users
,其中包含主键,电子邮件字段和密码字段。我创建了其他几个表,例如physical_details
,personal_data
,两者都使用外键user_id
。
现在我遇到了跨越结果的麻烦。例如,查找height
= 170
(物理详细信息)并同时使用marital_status
= married
(个人数据)的用户。我试图对小组进行分组,但它有点复杂,更糟糕的是,结果只带来主表(用户)的值
答案 0 :(得分:0)
您需要使用Query Builder执行join。您可能需要类似以下代码的内容:
$result = DB::table('users')
->distinct() // We most likely don't want duplicate rows
->join('physical_details', 'users.id', '=', 'physical_details.user_id')
->join('personal_data', 'users.id', '=', 'personal_data.user_id')
->select('users.id', 'physical_details.columnX', 'personal_data.columnY')
->where('personal_data.marital_status', '=', 'married')
->where('physical_details.height', '=', 170)
->get();
此处,$result
应该是包含属性id
,columnX
和columnY
的对象数组(选择包含您要查找的信息的任何列)
我链接到的文档应该可以为您提供更多帮助。
答案 1 :(得分:0)
如果表之间的关系是设置的。
$users = User::wherehas('personnal_data',function($q) {
$q->wheremaritalStatus('Married');
})->get();
dd($users);
应该有用吗?
此致