在Laravel语法中对三个或四个不同的表执行JOIN

时间:2014-03-28 12:04:39

标签: php mysql join laravel laravel-4

TABLES X(ID,A_ID)A(ID,B_ID),B(ID,C_ID),C(ID,D_ID)D(id,VALUE)

我希望使用基于D表ID的laravel语法检索X表的值,并对其他表执行JOIN

请仅以laravel语法发布答案。我可以用其他格式。我是新手。

X::select('value')
->join('a', 'X.a_id', '=', 'a.id')
->join('b', 'a.b_id', '=', 'b.id')
->join('c', 'b.c_id', '=', 'c.id')
->join('d', 'c.d_id', '=', 'd.id')
->where('x.id', '=', $val)
->get();

但它不起作用。请给我正确的解决方案。现在我使用PHP逻辑来获取值,而不是优化查询。

3 个答案:

答案 0 :(得分:0)

有很多方法,但这是基本的:

$rows = DB::table('shares')
        ->join('users', 'users.id', '=', 'shares.user_id')
        ->join('follows', 'follows.user_id', '=', 'users.id')
        ->where('follows.follower_id', '=', 3)
        ->get();

答案 1 :(得分:0)

doc

试试这个:

DB::table('X')
   ->join('a', 'X.a_id', '=', 'a.id')
   ->join('b', 'a.b_id', '=', 'b.id')
   ->join('c', 'b.c_id', '=', 'c.id')
   ->join('d', 'c.d_id', '=', 'd.id')
   ->select('D.value')
   ->where('x.id', '=', $val)
   ->get();

答案 2 :(得分:0)

$result = X::select('a.value', 'd.*')
    ->join('a', 'x.a_id', '=', 'a.id')
    ->join('b', 'a.b_id', '=', 'b.id')
    ->join('c', 'b.c_id', '=', 'c.id')
    ->join('d', 'c.d_id', '=', 'd.id')
    ->where('x.id', '=', $val)
    ->get();

foreach ($result as $row) {
    # code...
}