Я пытаюсь красноречивое отношение в первый раз, и я почесал голова часов вокруг этой проблемы ... вот мой код:Laravel отношения hasmany запроса Сомнительной
Rides модель
public function messages()
{
return $this->hasMany('Messages', 'ride_id');
}
сообщения модели
class Messages extends Eloquent {
protected $guarded = ['id'];
public function message(){
return $this->belongsTo('Rides');
}
}
скачет контроллер
public function show($user)
{
$ride = Rides::with('user')->where('id' ,'=',$user->id)->get();
$ridesObj = new Rides();
$messages = $ridesObj->messages()->where('ride_id', '=',$ride[0]->id)->get();
return View::make('site/rides/show')
->with('ride',$ride)
->with('messages',$messages);
}
Сбор $ сообщений всегда пуст, ища запрос: выберите * from messages
где messages
. ride_id
is null и ride_id
= '5' проблема в том, где messages
. ride_id
is null Почему и как это условие создано?
В ваших '$ ridesObj-> messages() -> где ('ride_id', '=', $ ride [0] -> id) ...' оператор 'where()' избыточен. Сообщение '$ ride->' уже неявно ограничивает сообщения, возвращаемые сообщениям, связанным с Ride. Я рекомендую проверить документы Eloquent и экспериментировать с '' php artisan tinker' немного – ErikTheDeveloper