Подтвердить что ты не робот

Отношения Laravel

Я смотрел отношения в Laravel 4 в документации , и я пытаюсь выработать следующее.

У меня есть таблица в моей базе данных под названием "события". Эта таблица содержит различные поля, которые содержат в основном ID, которые относятся к другим таблицам. Например, у меня есть таблица "курсов". В таблице событий содержится поле "курс_ид", которое относится к идентификатору поля "id" в таблице курсов.

Итак, в основном, после некоторых советов о том, как вы относитесь к двум (belongsTo()?), а затем передаете подключенные данные в представление.

Вот где я нахожусь http://paste.laravel.com/pf3.

Надеюсь, вы, ребята, можете дать мне несколько советов о том, как лучше всего подойти к этой проблеме. Спасибо.

Газ

4b9b3361

Ответ 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)}}

Работайте для меня;)