Laravel使用Where连接表

时间:2015-02-05 09:55:36

标签: php mysql laravel

我想像这样加入。我哪里出错?

<?php
    for($i=1; $i<=$someValue; $i++){
              $allProjectsList = DB::table('user')
                         ->join('firstTable', 'user.id', '=','firstTable.id')
                         ->join('secondTable', 'user.pidm', '=','secondTable.id') 
                         //->where('id', '=', '$anotherValue')
                         ->first();
                         $anotherValue++;
    }
?>

--- ---更新

这个很好用但是,

<?php
        for($i=1; $i<=$someValue; $i++){
                  $allProjectsList = DB::table('user')
                             ->join('firstTable', 'user.id', '=','firstTable.id')
                             ->join('secondTable', 'user.pidm', '=','secondTable.id') 
                             ->where('user.id', '=', '123456')
                             ->first();
        }
?>

我想使用像$ x这样的变量而不是'123456',但它不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

首先使用where语句确实有效。但它只返回一个用户模型,其中get将返回一个集合对象数组。该阵列可以容纳零个,一个或多个用户模型。

我认为你遇到的一个主要问题是你的循环中有你的查询(它返回一个模型)。循环中的查询应该始终避免,我老实说甚至不能告诉你为什么要在循环中使用它,因为$ i甚至没有被使用,然后你在循环中每次迭代都会覆盖$ allProducts值。

如果没有更多的信息和背景,我无法进一步帮助你(除了你自己想象的那些),但我认为有一个关于第一个和第一个正确信息的答案非常重要。其他人来这个问题求助。

另一个注意事项是,您似乎将用户模型用作用户模型以外的其他模型。我鼓励你研究关系,因为你真的不应该用一个用户id返回多个用户模态。 http://laravel.com/docs/4.2/eloquent

答案 1 :(得分:0)

将where语句与 - &gt; first()一起使用不起作用。必须使用where语句 - &gt; get()
这解决了我的问题:

<?php
   $allProjectsList = DB::table('user')
                             ->join('firstTable', 'user.id', '=','firstTable.id')
                             ->join('secondTable', 'user.pidm', '=','secondTable.id') 
                             ->where('user.id', '=', $aVariable)
                             ->get();

  foreach($allProjectsList as $rowValues){
     echo('$rowValue->someJoinedFieldValue');
  }
?>


感谢您分享您的想法。