2014-10-06 98 views
0

我有一個產品表,另一個表與產品的運動(添加,減法)和這些運動的作者表。 我想獲得的所有產品用雄辯ORM 我已經試過了最後一個樂章......laravel雄辯相關關係只有第一個記錄

 $products = Product::with(array 
     (
      'movs' => function ($query) 
      { 
       $query->orderBy('id', 'dsc')->with('author')->first(); 
      } 
     ))->get(); 

但只得到歸零MOVS陣列。

但是當我做

 $products = Product::with(array 
     (
      'movs' => function ($query) 
      { 
       $query->orderBy('id', 'dsc')->with('author'); 
      } 
     ))->get(); 

我得到的所有相關按車型器(MOV和作者)......有什麼辦法雄辯獲得這個或我有一個查詢生成器做...如果是的話......怎麼樣?

非常感謝您。

+0

閱讀本http://softonsofa.com/tweaking-eloquent-relations-how-to-get-latest-related-model/ – 2014-10-06 13:35:17

+0

重複指向:http:// stackoverflow.com/questions/24343738/getting-just-the-latest-value-on-a-joined-table-with-eloquent – 2014-10-06 14:03:07

+0

嗨Jarek ...感謝信息,但不完全是我想要的...我不想用一個只需要一個點的函數加載模型。最新的方法沒有給出最後的記錄......因爲我不信任created_at時間..我相信按id排序。 它不重複Yasen,因爲我問如果只是作爲雄辯句子(而不是模型功能)或數據庫查詢生成器構建的某種方式... 反正非常感謝 – David 2014-10-06 16:20:17

回答

0

嗯...是不可能建立與口才......不可能的(使用DB原料時錯誤),以便建立與查詢生成器......在年底建立與MySQL和DB ::選擇

句子說選擇與最後的運動和作者的運動產品。 (空如果沒有運動)

上的最後一個ID不是日期

 $mq = "select * 
      from products 
      left join 
      (
        select concat (users.first_name,' ', users.last_name) as author, 
        from users 
        join (
           select * 
           from movs 
           join (
             select max(movs.id) as id 
             from movs 
             group by product_id 
             ) as movsids 
           on (movsids.id = movs.id) 
        ) 
        as movuser 
        on movuser.author_id = users.id 
      ) 
      as last_movs 
      on products.id = last_movs.product_id"; 

     return DB::select($mq);