2014-12-19 3 views
1

Я недавно начал использовать Laravel, и я хотел бы знать, есть ли способ отвязать отношения модели в конкретных вызовах. Например, если одна из моих моделей получила привязку hasOne, у меня есть конкретный вызов, который я не хочу, чтобы это отношение было восстановлено для устранения дополнительных запросов к базе данных. Я знаю, что это возможно в CakePHP, но пока не нашли способ сделать это в Laravel.Laravel Eloquent Model Unsindings

Благодаря

+1

отношения не неправдоподобным, если не называть их (динамические свойства) или нагрузки (отложенной загрузки/нетерпеливая загрузка). –

+2

Это поможет увидеть некоторый код. Вы пробовали просто не запрашивать связанные данные? http://laravel.com/docs/4.2/eloquent#querying-relations. – Dave

+0

@JarekTkaczyk Связанные модели, похоже, доступны, поэтому я предполагаю, что они извлекаются автоматически. Так у меня есть модель пользователя с этим в ней: общественной функции UserTransaction() { возвращение $ this-> hasMany ('UserTransaction'); } $ user-> userTransaction автоматически используется при выполнении: $ 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

Это помогает прояснить проблему. Благодаря! –

Смежные вопросы