ユーザーガイドで何かを見つけました。どうやらあなたはそのwith()
方法が必要なようです。
ユーザーガイドから:
デフォルトでは、ピボットテーブルの特定のフィールド(2つの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