尝试在Fluent laravel 4中加入2表查询

时间:2013-09-21 09:49:09

标签: php laravel laravel-4

我试图通过我的模型在Fluent中加入2个表我在mysql客户端上运行查询并给我想要的回报。

这是标准查询

select `songlist`.*, `queuelist`.* from `songlist` inner join `queuelist` on `songlist`.`id` = `queuelist`.`songID` where `queuelist`.`songID` = songlist.ID and `songlist`.`songtype` = 'S' and `songlist`.`artist` <> "" order by `queuelist`.`sortID` ASC limit 4

确实会返回我正在寻找的数据。

现在使用流利的模型。

我确实喜欢这个。

public static function comingUp()
{

    $getcomingUp = DB::table('songlist')
    ->join('queuelist', 'songlist.id', '=', 'queuelist.songID')
    ->select('songlist.*','queuelist.*')

    ->where('queuelist.songID', '=', 'songlist.ID')
    ->where('songlist.songtype', '=', 'S')
    ->where('songlist.artist', '<>', '')        
    ->orderBy('queuelist.sortID', 'ASC')
    ->take('4')
    ->get();

    return $getcomingUp;



}

和我的控制器测试我是否得到这样的数据

public function getComingUp()
{
    $getcomingUp = Radio::comingUp();

foreach ($getcomingUp as $cup)
 {
echo $cup->title;
 }


 // return View::make('comingup', compact('comingup'));


}

你可以看到foreach没有返回任何数据,查询没有任何问题,因为laravel根本没有给我任何错误。但我不能让foreach显示我正在寻找的数据。

我尝试使用$ cup-&gt; songlist.title; 并且它不工作以太。

感谢任何帮助都会受到欢迎。抱歉我的英语。

1 个答案:

答案 0 :(得分:1)

你可以这样做。

public static function comingUp()
{

    $getcomingUp = DB::table('songlist')
      ->select('songlist.*','queuelist.*')
    ->join('queuelist', 'queuelist.songID', '=', 'songlist.id')



    ->where('songlist.songtype', '=', 'S')
    ->where('songlist.artist', '<>', '')        
    ->orderBy('queuelist.sortID', 'ASC')
    ->take('4')
    ->get();

    return $getcomingUp;



}