Laravel ORM在一个阵列中一对多

时间:2015-02-03 08:46:33

标签: php laravel laravel-4 orm

在Laravel 4.2中,我有这个模型

// models ticket.php
class Ticket extends Eloquent {

    public function feedback()
    {
        return $this->hasMany('Feedback');
    }
}

// models/feedback.php
class Feedback extends Eloquent {

    public function ticket()
    {
        return $this->belongsTo('Ticket');
    }
}

当我这样做时:

$tickets = Ticket::with('feedback')->get();

它按预期返回一个包含反馈的所有故障单的数组。

接下来我想获得一张包含所有相关反馈的门票:

$tickets = Ticket::find($id)->with('feedback')->get();

这也会返回所有票据及其反馈。

我试过了:

$tickets = Ticket::find($id)->with('feedback')->first();

这似乎有效,但忽略$ id并始终显示表中的第一行/票证。 $ id不为空,我查了一下。

1 个答案:

答案 0 :(得分:2)

find()已经运行了一个查询。然后with()->get()运行另一个没有id的where子句。这样做:

$ticket = Ticket::with('feedback')->find($id);