我刚刚在用户指南中找到了一些东西,显然您需要该with()
方法。
从用户指南:
默认情况下,只会返回数据透视表中的某些字段(两个 id 字段和时间戳)。如果您的数据透视表包含其他列,您也可以使用 with() 方法获取它们:
class User extends Eloquent {
public function roles()
{
return $this->has_many_and_belongs_to('Role', 'user_roles')->with('column');
}
}
因此,您可以在定义您的关系时使用与此类似的内容:
$this->has_many_and_belongs_to('User')->with('playcount');
例子
我只是用它来确保它有效......
class Song extends Eloquent {
function users()
{
return $this->has_many_and_belongs_to('User')->with('playcount');
}
}
class User extends Eloquent {
function songs()
{
return $this->has_many_and_belongs_to('Song')->with('playcount');
}
}
// My test method
class TestOrm extends PHPUnit_Framework_TestCase {
public function testSomethingIsTrue()
{
foreach(User::find(3)->songs()->order_by('playcount')->get() as $song)
echo $song->name, ': ', $song->pivot->playcount, "\n";
echo "\n";
foreach(User::find(3)->songs()->order_by('playcount','desc')->get() as $song)
echo $song->name, ': ', $song->pivot->playcount, "\n";
}
}
输出
Jingle Bells: 5
Mary had a little lamb: 10
Soft Kitty: 20
The Catalyst: 100
The Catalyst: 100
Soft Kitty: 20
Mary had a little lamb: 10
Jingle Bells: 5
注意:不使用order_by()
结果按ascending
顺序排列并非巧合playcount
。我通过测试确认了这一点(因为我还不知道如何在单元测试中显示查询),但您可能不应该依赖这种行为。