获取laravel数据与表

获取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 & sectorLanguage得到第一项然后申请 所需的关系

希望它能工作!

+0

如何获得正确的语言。客户姓名在所有语言中均相同,但部门名称不同。 – monchyrcg

+0

你可以像这样使用'where()' - '$ cliente-> sector-> sectorLanguage-> where('name','YOUR_NAME') - > get();'。 –