I\'ve been looking over relationships in Laravel 4 in the documentation and I\'m trying to work out the following.
I have a table in my database called \'events\'. T
You need to specify in both models a relationship. belongsTo() in one, hasOne() in the other, since you are using one-to-one relationship
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');
}
}
Then calling it in the route or the controller would be as following:
Course of specific event (in this case with id of 1)
$course = Event::find(1)->course;
Event of specific course (in this case with id of 1)
$event = Course::find(1)->event;
Please refer to the Laravel 4 documentation, section Eloquent ORM: http://laravel.com/docs/eloquent#one-to-one
This is basically the same answer as @Marko Aleksić, but with the hasOne() and belongsTo() relationships the right way around.
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
}
}