2014-12-22 62 views
3

我正在使用Laravel的Eloquent ORM,但想定義一個複雜的關係並想知道在定義關係時是否可以使用查詢生成器或原始SQL 。如何在Laravel Eloquent關係中使用查詢生成器或原始SQL

這是模式:

表:對象;型號:對象

表:用戶;型號:用戶

表:objects_users;關係:ManyToMany - 一個對象可以被許多用戶擁有,用戶可以擁有許多對象。

使用傳統關係對正常記錄(單獨輸入到數據透視表中的記錄)可以正常記錄。不過,我還想根據其他標準返回其他結果;即如果它們具有設置的調試器標誌,則允許所有對象屬於用戶。從本質上講,我想模仿這個查詢:

SELECT objects.* 
FROM objects 
LEFT JOIN objects_users ON objects.id = objects_users.object_id 
INNER JOIN users ON 
    objects_users.user_id = users.id 
    OR users.debugger = 1 

另外,如果這個不能做,是有可能從一個查詢生成器查詢返回雄辯模式?

回答

4

你可以做這樣的事情:

$objects = DB::select('select objects.* from objects 
    LEFT JOIN objects_users ON objects.id = objects_users.object_id 
    INNER JOIN users ON 
    objects_users.user_id = users.id 
    OR users.debugger = 1');` 

之後,你可以「轉換」的原始結果對象到你指定的型號那樣:

$objArray = array(); 
$objArray = YourObjectModel::hydrate($objects); 

希望這將幫助你! 無論如何都有一個不錯的聖誕節;)

+0

非常好,我喜歡它。很簡單。不是我以前的100%,但我認爲這是一個比我最初走下去的路線更清潔的解決方案!非常感謝你的幫助。 –

相關問題