获取表之间关系的laravel数据

时间:2016-11-16 14:40:57

标签: php database laravel laravel-5 relationship

我有以下数据模型:

layout_weight

我想要恢复所有活动客户端及其所属扇区的名称,如果我这样做的话

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');
     }
}

当我运行$ client时,我无法输入属性

$cliente = Cliente::where('active','1');

为什么呢?当我通过id

找到它时,它只适用于我
foreach($cliente as $cli) {
  $cli->sector->sectorLanguage->nombre;
}

如何在不使用Query Builder执行SQL的情况下获取所需内容。

非常感谢,问候。

1 个答案:

答案 0 :(得分:1)

根据您定义的关系,Sector有很多sectorLanguage,这意味着您收到了collection,因此您应该处理这样的对象:

$cliente->where('active', 1)
            ->first()
            ->sector
            ->sectorLanguage
            ->first()
            ->nombre;
  

Cliente::where('active', 1)sectorLanguage为您提供了收藏,因此您   首先应该从$cliente& sectorLanguage然后应用   理想的关系

希望它能够奏效!