私は2つのモデルとそれらの関係を持っています。最初のクラスは「Documento」と呼ばれます:
class Documento extends Model
{
protected $table = 'documento';
protected $primaryKey = 'cod_documento';
public function emisor()
{
return $this->belongsTo('App\Emisor', 'cod_emisor', 'cod_emisor');
}
}
2 つ目は「Emisor」と呼ばれます。
class Emisor extends Model
{
protected $table = 'emisor';
protected $primaryKey = 'cod_emisor';
public function documentos()
{
return $this->hasMany('App\Documento', 'cod_emisor', 'cod_emisor');
}
}
モデルの関係は 1 対多です (1 つのエミッターには多くのドキュメントがあり、1 つのドキュメントには 1 つのエミッターしかありません)。
Thinker では、ドキュメントから emisor を取得しようとしていますが、これはうまく機能します。
>>> Documento::find(1)->emisor->name
=> "Emisor Name"
しかし、ドキュメント内の emisor を Eager Loading しようとすると、「失敗」します。
>>> Documento::find(1)->with('emisor')->count();
=> 94041
1 つの結果を期待していましたが、クエリは 94041 個のドキュメントを返します。
なぜこうなった?ネストされたemisorで1つのドキュメントを取得するには?