Отношения Laravel
Я смотрел отношения в Laravel 4 в документации , и я пытаюсь выработать следующее.
У меня есть таблица в моей базе данных под названием "события". Эта таблица содержит различные поля, которые содержат в основном ID, которые относятся к другим таблицам. Например, у меня есть таблица "курсов". В таблице событий содержится поле "курс_ид", которое относится к идентификатору поля "id" в таблице курсов.
Итак, в основном, после некоторых советов о том, как вы относитесь к двум (belongsTo()?), а затем передаете подключенные данные в представление.
Вот где я нахожусь http://paste.laravel.com/pf3.
Надеюсь, вы, ребята, можете дать мне несколько советов о том, как лучше всего подойти к этой проблеме. Спасибо.
Газ
Ответы
Ответ 1
Это в основном тот же ответ, что и @Marko Aleksić, но с отношениями hasOne() и belongsTo() правильно.
class Course extends Eloquent{
protected $table = 'courses';
public function event()
{
return $this->hasOne('Event'); // links this->id to events.course_id
}
}
class Event extends Eloquent {
protected $table = 'events';
public function course()
{
return $this->belongsTo('Course'); // links this->course_id to courses.id
}
}
Ответ 2
Вам нужно указать в обеих моделях отношение. belongsTo() в одном, hasOne() в другом, так как вы используете отношения "один-к-одному"
class Course extends Eloquent{
protected $table = 'courses';
public function event()
{
return $this->belongsTo('Event');
}
}
class Event extends Eloquent {
protected $table = 'events';
public function course()
{
return $this->hasOne('Course');
}
}
Затем вызов этого маршрута или контроллера будет следующим:
Курс конкретного события (в данном случае с идентификатором 1)
$course = Event::find(1)->course;
Событие конкретного курса (в данном случае с идентификатором 1)
$event = Course::find(1)->event;
Пожалуйста, обратитесь к документации Laravel 4, раздел "Красноречивый ORM": http://laravel.com/docs/eloquent#one-to-one
Ответ 3
Model
public function events(){
return $this->belongsTo('Events', 'id_events');
}
контроллер
protected events;
public _construct(SomeTable $table){
$this->table = $table;
$this->events = Events::select('id', 'name')->get()->lists('name', 'id');
}
public create(){
return View::make('someTable.create', compact('someTable'))->with('events', $this->events);
}
Вид
<td>The Events Name!:</td>
{{Form::select('id_events', $events)}}
Работайте для меня;)