加入查询仅显示第一项

时间:2017-05-17 11:53:23

标签: laravel

我尝试显示以下查询的结果,但我只得到一个项目。

该查询应该显示我2项

这是我的数据库

  

表:compet_equipe(compet_id,equipe_id)

compet_id : 2 / equipe_id = 4
compet_id : 2 / equipe_id = 1 

比赛有很多设备和比赛有很多比赛

有人知道我哪里做错了吗?

这是我在控制器中的查询:

$domicile = CompetEquipe::join('equipe' , 'equipe_id' , '=' , 'compet_equipe.equipe_id')
    ->join('structures' , 'structure_id' , '=' , 'equipe.structure_id')
    ->join('catg_equipe' , 'catg_equipe_id' , '=' ,  'equipe.catg_equipe_id')
    ->select('lb_equipe' , 'catg_equipe.lb_catg_equipe' , 'structures.nom_structure')
    ->where(['compet_id' => $competition->id])
    ->get()
    ->mapWithKeys(function($i) {
        return [$i->id => $i->lb_equipe.' - '.$i->nom_structure.' - '.$i->lb_catg_equipe];
    });

我做的时候更新:

$domicile = CompetEquipe::where(['compet_id' => $competition->id])
        ->get();

#original: array:2 [▼
        "compet_id" => 1
        "equipe_id" => 2
      ]

#original: array:2 [▼
        "compet_id" => 1
        "equipe_id" => 4
      ]

它正在运行,但是当我使用equipe加入以获取设备名称时...查询不起作用

1 个答案:

答案 0 :(得分:0)

您是否尝试过建立关系并急切加载?我对任何不正确的型号名称表示歉意,我对翻译不满意。

class Competition extends Model {
    public function equipes()
    {
        return $this->belongsToMany('App\Equipe', 'compet_equipe');
    }
}

然后查询如下:

$competition = Competition::with('equipes')->find($id);
$equipes = $competition->equipes;