1
我最近開始使用Laravel,我想知道是否有方法在特定的調用中解除模型關係。例如,如果我的一個模型獲得了hasOne綁定,我有一個特殊的調用,我不希望檢索該關係以消除額外的數據庫調用。我知道這在CakePHP中是可行的,但還沒有找到在Laravel中實現的方法。Laravel雄辯的模型解除綁定
謝謝
我最近開始使用Laravel,我想知道是否有方法在特定的調用中解除模型關係。例如,如果我的一個模型獲得了hasOne綁定,我有一個特殊的調用,我不希望檢索該關係以消除額外的數據庫調用。我知道這在CakePHP中是可行的,但還沒有找到在Laravel中實現的方法。Laravel雄辯的模型解除綁定
謝謝
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'));
這有助於澄清問題。謝謝! –
關係不牽強,除非你給他們打電話(動態屬性)或負載(延遲加載/渴望加載)。 –
這將有助於看到一些代碼。您是否嘗試過不查詢相關數據? http://laravel.com/docs/4.2/eloquent#querying-relations。 – Dave
@JarekTkaczyk相關模型似乎可用,因此我假設它們正在自動檢索。所以我有一個用戶模型與此: 公共職能UserTransaction() { return $ this-> hasMany('UserTransaction'); } $ user-> userTransaction在執行時自動可用: $ user = User :: find(1);例如 –