2014-12-19 279 views
1

我最近開始使用Laravel,我想知道是否有方法在特定的調用中解除模型關係。例如,如果我的一個模型獲得了hasOne綁定,我有一個特殊的調用,我不希望檢索該關係以消除額外的數據庫調用。我知道這在CakePHP中是可行的,但還沒有找到在Laravel中實現的方法。Laravel雄辯的模型解除綁定

謝謝

+1

關係不牽強,除非你給他們打電話(動態屬性)或負載(延遲加載/渴望加載)。 –

+2

這將有助於看到一些代碼。您是否嘗試過不查詢相關數據? http://laravel.com/docs/4.2/eloquent#querying-relations。 – Dave

+0

@JarekTkaczyk相關模型似乎可用,因此我假設它們正在自動檢索。所以我有一個用戶模型與此: 公共職能UserTransaction() { return $ this-> hasMany('UserTransaction'); } $ user-> userTransaction在執行時自動可用: $ user = User :: find(1);例如 –

回答

1

Laravel中的關係只有在指定時才被加載。如果您不急於加載關係,則在您第一次嘗試訪問它時將會進行延遲加載,使其看起來好像它已被加載。

用戶等級:

class User extends Eloquent 
{ 
    public function userTransactions() 
    { 
     return $this->hasMany('UserTransaction'); 
    } 
} 

預先加載:

// runs one query to get the user, and a second query to get the user 
// transactions for the user 
$user = User::with('userTransactions')->find(1); 

延遲加載:

// runs one query to get the user 
$user = User::find(1); 

// first time the userTransactions property is accessed, it runs the query 
// to get the user transactions for the user. 
print_r($user->userTransactions->lists('id')); 
+1

這有助於澄清問題。謝謝! –