2013-07-23 1 views
1

Я использую laravel4 с красноречивым и имею некоторые проблемы с проблемой загруженной загрузки. Из документации на официальном сайте http://laravel.com/docs/eloquent#eager-loading жадная загрузка используется следующим образом:Как правильно использовать загрузку с ограничениями в Laravel 4

$organizations = Organization::with(array('groups' => function($query) use ($groupIds) 
{ 
    $query->where('name', '=', 'HQ_Admins'); 
))->get(); 

Это пример кода из моего приложения. Яркая загрузка в целом работает, я получаю все организации с принадлежащими к ним группами. Проблема в том, что я указал предложение where, как в приведенном выше примере кода, и это кажется неработоспособным. Я сделал все, кроме красноречивого, не регистрировал предложение where. Я также пробовал некоторые вещи, чтобы получить собственный SQL-запрос и экспериментировал с некоторыми вещами, но в итоге результат не такой, как я ожидаю. Может ли кто-нибудь испытать подобную проблему?

спасибо

+0

http://stackoverflow.com/questions/16789285/eloquent-nested-relation-with-some-constraint –

ответ

2

Я попытался сделать то же самое. У меня есть таблицы компаний и пользователей. В одной компании много пользователей.

код:

Route::get('testeager', function() { 
    $companies = Company::with(array('users' => function($query) { 
     $query->where('email', 'like', '%koko%'); 
    })) 
    ->where('companies.id','=','54') // Put it here in order to debug easily. Take just one company 
    ->get(); 

    //$queries = DB::getQueryLog(); 
    //dd($queries); 

    return $companies; 
}); 

Я добавил новый пользователь с электронной почтой, как «[email protected]» и комментировал и незакомментированные $ query-> где состояние. И это сработало для меня. Единственная проблема у меня было, что, когда я вставил строку в таблице пользователей через PhpMyAdmin поле «deleted_at» не было NULL, так что я не мог этого пользователя ...

Похоже, что-то не так где-то еще

+0

После повторного тестирования я проверил, что я пропустил предложение where во внутренней функции. Я ожидал, что я получаю только организации с именем = «HQ_Admins» и группами для этих организаций. Теперь я понял, что все организации выбраны, но внутренняя функция говорит, что группы также должны быть выбраны, если name = 'HQ_Admins'. Так что это была моя ошибка, потому что я пропустил документацию. Но спасибо за ваше тестирование, это помогло мне. – okarahan

+0

Всегда приветствуются – Victor

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

  • Нет связанных вопросов^_^