2016-05-30 4 views
0

У меня есть отношение «один ко многим», которое отлично работает при использовании отношения как свойства в запросе, но когда я пытаюсь использовать его как метод, он всегда возвращает пустой.Метод построения запросов запросов на получение искомых запросов возвращает

пользователя Модель

public function reports() 
{ 
    return $this->hasMany('App\Report', Report::COL_USER_ID, self::COL_ID); 
} 

Report Model

public function user() 
{ 
    return $this->hasOne('App\User', User::COL_ID, self::COL_USER_ID); 
} 

Это Работает

$reports = User::find($id)->reports; 

Это не так и мне нужно что-то вроде этого

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC); 

Согласно красноречивый документ, «поскольку все отношения также служат в качестве строителей запроса, вы можете добавить дополнительные ограничения», так что следует полностью получения надлежащего данные, я что-то упускаю? Заранее спасибо за любую помощь

ответ

1

Вы должны использовать get метод, чтобы получить реальные результаты, так что вы должны использовать:

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC)->get(); 

вместо только:

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC); 

В вашем случае, вы только создал запрос и не получил никаких результатов из базы данных. Вот почему вы не получаете никаких результатов.

И причина:

$reports = User::find($id)->reports; 

работает, потому что это ярлык для:

$reports = User::find($id)->reports()->get(); 

Если вы пытаетесь использовать:

$reports = User::find($id)->reports(); 

только вы не получите какой-либо результаты тоже.

+0

спасибо! было ощущение, что это было что-то нелепое: / –

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