Laravel使用Where联接表


Laravel Join tables using Where

我想进行这样的联接。我哪里错了?

<?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",但它不起作用。有什么建议吗?

使用带有first的where语句确实有效。但它只返回一个用户模型,其中get将返回一个集合对象数组。此数组可以容纳零个、一个或多个用户模型。

我认为您面临的主要问题之一是,您的查询(返回一个模型)处于循环中。应该始终避免循环中的查询,老实说,我甚至不知道为什么要在循环中使用它,因为$I甚至没有使用,然后在循环的每次迭代中都覆盖$allProducts值。

如果没有更多的信息和背景,我真的无法进一步帮助你(除了你自己想的之外),但我认为重要的是要有一个正确的答案,告诉其他来寻求帮助的人第一个和在哪里。

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

将where语句与->first()一起使用不起作用。必须将where语句与->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');
  }
?>


感谢您分享您的想法。