首页 > 解决方案 > laravel eloquen 函数 with() 从关系 2 表中仅获取 3 列

问题描述

我需要 id_jornada, nombre_jornada 和关系学校: nombre_colegio 但最后一个 concat "nombre_jornada + nombre_colegio"

乔纳达控制器

public function index(){
    $res = Jornada::where('estado', 1)->with('school:id,nombre_colegio')->get();

    return response()->json($res);
}

axios 响应

[
   {
      "id_jornada":1,
      "school_id":1,
      "nombre_jornada":"Matutina",
      "estado":1,
      "created_at":null,
      "updated_at":"2021-02-05T21:19:17.000000Z",
      "school":{
         "id":1,
         "nombre_colegio":"La pradera"
      }
   },
   {
      "id_jornada":3,
      "school_id":7,
      "nombre_jornada":"Vespertina",
      "estado":1,
      "created_at":"2021-02-05T23:26:12.000000Z",
      "updated_at":"2021-02-06T00:09:45.000000Z",
      "school":{
         "id":7,
         "nombre_colegio":"La pradera"
      }
   }
]

但我需要这样。

{
  "id_jornada":[
      "nombre_jornada + nombre_colegio",
    ]
}

json

{
  "1":[
      "Matutina La pradera",
    ],
  "3":[
      "Vespertina La pradera",
   ]
}

标签: mysqllaraveleloquenteloquent-relationship

解决方案


您可以使用foreach并制作该数组

public function index()
{
    $jornada = Jornada::where('estado', 1)->with('school:id,nombre_colegio')->get();
    $result = [];
    foreach ($jornada as $row) {
        $res[] = $row->nombre_jornada . ' ' . $row->school->nombre_colegio ?? "";
    }

    return response()->json($result);
}

推荐阅读