im пытается выяснить красноречивым и с трудом понять это, даже tho ive попытался прочитать на нем.Laravel eloquent отношения не дают мне то, что я хочу
У меня есть две таблицы: fs_festivals и fs_bands.
fs_festivals: идентификатор, имя
fs_bands: Идентификация, festival_id, имя
Так, один фестиваль может иметь много групп, и одна группа принадлежит к фестивалю.
Band-модель (Band.php)
class Band extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
protected $fillable = array(
'festival_id','name','note','bandak', 'bandakinfo','created_by','updated_by'
);
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'fs_bands';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
public function festival() {
return $this->belongsTo('Festival');
}
}
Фестиваль-модель (Festival.php):
class Festival extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
protected $fillable = array(
'name','year','info','slug', 'image','created_by','updated_by'
);
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'fs_festivals';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
public function bands() {
return $this->hasMany('Band');
}
}
В моем контроллере:
public function festivalHome() {
$bands = Band::all();
return View::make('fis.festivalhome')->with('bands',$bands);
}
И на мой взгляд:
Bands:
@foreach($bands as $band)
{{ $band->name }}
@endforeach
В этом списке перечислены все группы в таблице fs_bands. Я только хочу перечислить тех, кто настроен с фестивалем_ид текущего фестиваля, над которым он работает (скажем, festival_id = '2'). Как я должен это делать?
Ive пытался это (видя, что другие сделали),
@foreach($festival->$bands as $band)
Но это дает мне ошибку
Неопределенная переменная: фестиваль
Что я делаю неправильно ? Также мне интересно, должен ли я сделать что-то еще вместо $ bands = Band: all(); перечислить их festival_id? Это был бы вариант, но что-то подсказывает мне, что это нужно делать автоматически с красноречивым.
Это дает мне: Не определено свойство: Осветить \ Database \ Eloquent \ Builder :: $ полосы (Вид:/вар/WWW/html/fis/app/views/fis/festivalhome.blade.php) –
забыть о первом() методе :) fix – xAoc
Это сработало. Я использовал: $ festival = Festival :: с ('band') -> whereId ($ festivalid) -> first(); а затем @foreach ($ festival-> band as $ band) {{$ band-> name}} @endforeach Спасибо большое Dmytro! –