获取laravel数据与表
问题描述:
之间的关系,我有以下数据模型:获取laravel数据与表
class Cliente extends Model
{
public function sector()
{
return $this->belongsTo(Sector::class,'sectoresId');
}
}
class Sector extends Model
{
public function sectorLanguage()
{
return $this->hasMany(SectorLanguage::class,'sectoresId');
}
public function cliente()
{
return $this->hasMany(ClienteLanguage::class,'sectoresId');
}
}
class SectorLanguage extends Model
{
public function sector()
{
return $this->belongsTo(Sector::class,'sectoresId');
}
public function idioma()
{
return $this->belongsTo(Idioma::class,'idiomasId');
}
}
我要恢复所有活动的客户端和部门的名称,其所属,如果我做这样的事情
$cliente = Cliente::where('active','1');
当我运行$客户端我不能进入属性
foreach($cliente as $cli) {
$cli->sector->sectorLanguage->nombre;
}
为什么?它只有当我发现它的ID
$cliente = Cliente::find(1);
echo $cliente->sector->sectorLanguage->nombre;
我怎样才能得到我所需要的,而不诉诸做与SQL查询构建器为我工作。
非常感谢你,问候。
答
根据您定义的关系,则Sector
有许多sectorLanguage
,这意味着你收到collection
,所以你应该像这样的对象上工作:
$cliente->where('active', 1)
->first()
->sector
->sectorLanguage
->first()
->nombre;
Cliente::where('active', 1)
和sectorLanguage
给你收藏,所以你 应该首先从$cliente
§orLanguage
得到第一项然后申请 所需的关系
希望它能工作!
如何获得正确的语言。客户姓名在所有语言中均相同,但部门名称不同。 – monchyrcg
你可以像这样使用'where()' - '$ cliente-> sector-> sectorLanguage-> where('name','YOUR_NAME') - > get();'。 –