Laravel关系

Gar*_*ine 12 belongs-to relationships laravel eloquent laravel-4

我一直在文档中查看Laravel 4中的关系,我正在努力解决以下问题.

我的数据库中有一个名为'events'的表.该表具有各种字段,主要包含与其他表相关的ID.例如,我有一个'课程'表.事件表包含一个名为"course_id"的字段,该字段与courses表中"id"字段的ID相关.

所以基本上,我正在讨论如何关联两者(belongsTo()?)然后将连接的数据传递给视图.

这是我到目前为止的地方http://paste.laravel.com/pf3.

我希望你们能够就如何最好地解决这个问题给我一些建议.谢谢.

GAZ

Dav*_*ett 15

这与@MarkoAleksić的答案基本相同,但是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
    }

}
Run Code Online (Sandbox Code Playgroud)


Mar*_*sić 8

您需要在两个模型中指定关系.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');
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在路由或控制器中调用它将如下:

特定事件的过程(在这种情况下,id为1)

$course = Event::find(1)->course;
Run Code Online (Sandbox Code Playgroud)

特定课程的事件(在这种情况下,id为1)

$event = Course::find(1)->event;
Run Code Online (Sandbox Code Playgroud)

请参阅Laravel 4文档,Eloquent ORM部分:http://laravel.com/docs/eloquent#one-to-one