私のコードは Laravel+dingo によって構築されています。
1対多の関係である2つのモデルがあります:
予約.php (マスター)
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Reservation extends Model
{
protected $table = 'dbo.Reservation';
public function hasManyReservationDetails()
{
return $this->hasMany('App\Models\ReservationDetail', 'ReservationID', 'ReservationID');
}
}
ReservationDetail.php (詳細)
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ReservationDetail extends Model
{
protected $table = 'dbo.ReservationDetail';
public function belongsToReservation()
{
return $this->belongsTo('App\Models\Reservation', 'ReservationID', 'ReservationDetailID');
}
}
そして、次のように 2 つのモデル用の 2 つのトランスフォーマー:
予約トランスフォーマー
public function transform(Reservation $reservation)
{
return [
'reservation_id' => (int) $reservation->ReservationID,
'reservation_no' => $reservation->ReservationNo,
];
}
ReservationDetailトランスフォーマー
public function transform(ReservationDetail $reservation_detail)
{
return [
'reservation_detail_id' => (int) $reservation_detail->ReservationDetailID,
'reservation_id' => (int) $reservation_detail->ReservationID,
'room_no' => $reservation_detail->RoomNo,
];
}
私のコントローラーと問い合わせ
$reservation = Reservation::where('ReservationNo', '=', $reservation_no)
->with('ReservationDetails')
->get();
return $reservation;
次のリターンを取得します
{
"Reservations": [
{
"ReservationID": "1",
"ReservationNo": "2016-06-01 16:50:59.0659",
"reservation_details": [
{
"ReservationDetailID": "1",
"ReservationID": "1",
"RoomNo": "001",
},
{
"ReservationDetailID": "2",
"ReservationID": "1",
"RoomNo": "002",
}
]
}
]
}
私は次のことを試みますが、マスターテーブルの翻訳のみを返します。
$reservation = $this->collection($reservation, new ReservationTransformer());
**
マスター テーブルとディテール テーブルのデータを一緒に変換するにはどうすればよいですか?
**
「カスタム変換レイヤー」がどのように機能するかよくわかりません。例を挙げてくれる人はいますか?
どうもありがとう。