Laravel Relationships

≯℡__Kan透↙ 提交于 2020-01-20 04:34:04

问题


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'. This table has various fields that mainly contain ID's that relate to other tables. For example, I have a 'courses' table. The events table contains a field called 'course_id' which relates to the ID of the 'id' field in the courses table.

So basically, I'm after some advice on how you go about relating the two (belongsTo()?) and then passing the connected data to the view.

Here is where I am at so far http://paste.laravel.com/pf3.

I hope you guys are able to give me some advice on how best to approach this problem. Thanks.

Gaz


回答1:


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
    }

}



回答2:


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



来源:https://stackoverflow.com/questions/16210628/laravel-relationships

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!