在 Eloquent 模型中使用预加载的问题
Problem using Eager Loading in a Eloquent Model
我有 2 个模型及其关系。第一个class叫做'Documento':
class Documento extends Model
{
protected $table = 'documento';
protected $primaryKey = 'cod_documento';
public function emisor()
{
return $this->belongsTo('App\Emisor', 'cod_emisor', 'cod_emisor');
}
}
第二个叫'Emisor':
class Emisor extends Model
{
protected $table = 'emisor';
protected $primaryKey = 'cod_emisor';
public function documentos()
{
return $this->hasMany('App\Documento', 'cod_emisor', 'cod_emisor');
}
}
models关系是一对多的(一个emisor有多个文档,一个文档只有一个emisor)。
在 Thinker 中,我尝试从文档中获取发射器并且效果很好:
>>> Documento::find(1)->emisor->name
=> "Emisor Name"
但是当我尝试在文档中执行 Eager Loading the emisor 时,"fails":
>>> Documento::find(1)->with('emisor')->count();
=> 94041
我期望一个结果,但是查询 return 94041 个文档。
为什么会这样? emisor嵌套如何获取单文档?
交换 find()
和 with()
:
$documento = Documento::with('emisor')->find(1);
$documento = Documento::find(1)->load('emisor');
使用现有模型实例:
$documento->load('emisor');
您得到此意外结果是因为 Documento::find(1)->with('emisor')
创建了一个查询 all Documento
条目的新查询。因此 94041
.
的总数
我有 2 个模型及其关系。第一个class叫做'Documento':
class Documento extends Model
{
protected $table = 'documento';
protected $primaryKey = 'cod_documento';
public function emisor()
{
return $this->belongsTo('App\Emisor', 'cod_emisor', 'cod_emisor');
}
}
第二个叫'Emisor':
class Emisor extends Model
{
protected $table = 'emisor';
protected $primaryKey = 'cod_emisor';
public function documentos()
{
return $this->hasMany('App\Documento', 'cod_emisor', 'cod_emisor');
}
}
models关系是一对多的(一个emisor有多个文档,一个文档只有一个emisor)。
在 Thinker 中,我尝试从文档中获取发射器并且效果很好:
>>> Documento::find(1)->emisor->name
=> "Emisor Name"
但是当我尝试在文档中执行 Eager Loading the emisor 时,"fails":
>>> Documento::find(1)->with('emisor')->count();
=> 94041
我期望一个结果,但是查询 return 94041 个文档。
为什么会这样? emisor嵌套如何获取单文档?
交换 find()
和 with()
:
$documento = Documento::with('emisor')->find(1);
$documento = Documento::find(1)->load('emisor');
使用现有模型实例:
$documento->load('emisor');
您得到此意外结果是因为 Documento::find(1)->with('emisor')
创建了一个查询 all Documento
条目的新查询。因此 94041
.