laravel eloquent 函数 with() 从关系 2 表中仅获取 3 列

laravel eloquen fucntion with() get only 3 columns from relation 2 tables

我需要 id_jornada、nombre_jornada 和关系学校:nombre_colegio 但最后一个连接“nombre_jornada + nombre_colegio”

jornadaController

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",
   ]
}

您可以使用 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);
}