如何通过交易表Laravel获得课程

时间:2014-08-06 10:45:25

标签: php mysql laravel-4 eloquent

我希望通过事务表为所有用户提供课程。

这是我的数据库结构

当然

id | name | description | price

交易

id | course_id | user_id | name | description | expires

用户

id | username | email    

http://laravel.io/bin/da08n

我尝试过连接,但它多次返回同一个用户。

DB::table('transactions')->join('users', 'transactions.user_id', '=', 'users.id')->join('courses', 'transactions.course_id', '=', 'courses.id')->distinct()->get();

我如何通过Eloquent或其他方式实现这一目标?

1 个答案:

答案 0 :(得分:0)

好。

你有一个叫做交易的桌子和一个课程表。现在,每笔交易都与课程相关。 注意:您在一个表中有一条记录与另一个表中的另一条记录相关,这称为一对一关系。

在laravel中,您可以通过使用Model的关系来实现此目的。

您有一个名为'Transaction'的模型,另一个名为'Courses'的模型。

例如,您可以使用Cources::find($myId)从课程表中获得一条记录。

现在,如果你想通过将它与课程表相关联来获得交易记录,你应该这样做(在Laravel中):

在您的翻译模型中定义一个名为course的方法:

public function course ()
{
   $this->hasOne("course"); // course is the name of another model which should be related
}

然后你就这样使用它:

$result = Transaction::find($myCourseId)->course();

虽然对于您的情况,您希望通过将表的一个记录与另一个表的另一个记录匹配来获取许多记录。良好:

在交易模型中添加以下方法:

public function Users()
    {
        return $this->hasManyThrough('User', 'Course');
    }

使用上述方法,您应该能够根据事务获取Users through Course方法。

更多信息,请访问:

http://laravel.com/docs/eloquent#relationships