Laravel 4 - 通过关系获得表格的交叉结果

时间:2014-09-01 03:51:41

标签: php mysql sql laravel

使用Laravel,我创建了一个主表users,其中包含主键,电子邮件字段和密码字段。我创建了其他几个表,例如physical_detailspersonal_data,两者都使用外键user_id

现在我遇到了跨越结果的麻烦。例如,查找height = 170(物理详细信息)并同时使用marital_status = married(个人数据)的用户。我试图对小组进行分组,但它有点复杂,更糟糕的是,结果只带来主表(用户)的值

2 个答案:

答案 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应该是包含属性idcolumnXcolumnY的对象数组(选择包含您要查找的信息的任何列)

我链接到的文档应该可以为您提供更多帮助。

答案 1 :(得分:0)

如果表之间的关系是设置的。

$users = User::wherehas('personnal_data',function($q) {
$q->wheremaritalStatus('Married');
})->get();

dd($users);

应该有用吗?

此致