首页 > 解决方案 > Laravel 不能使用 Select 和 With

问题描述

我有 3 张桌子:
reservation
reservation_kit
kit

我使用这个命令来获取所有带有列resPickDateresReturnDate. 我也想得到工具包

    $reservations = Reservation::with('kits:kitNo')
    ->select('resPickDate', 'resReturnDate')
    ->get();

问题1:如果我取消注释选择,我会得到类似
{"resPickDate":"2018-10-29","resReturnDate":"2018-10-29","kits":[]}

问题 2:如果我评论选择,with('kits:kitNo')不只得到否,我也得到枢轴
"kits":[{"kitNo":"ACC_AUDIO-SPEAKERS_6840.01","pivot":{...}}

我怎么能只用 Kits 获得 resPickDate 和 resReturnDate ?

谢谢

标签: eloquentlaravel-5.6

解决方案


它的多对多通常使用这种绑定,它会破坏连接,因为您使用的是选择它只查找特定字段,现在我不知道如何使用这样的多对多进行绑定,但是您可以尝试:

Reservation::with('kits:kitNo')
->get()
->map(function ($item, $key){ 
  return [
    "resPickDate" => $item->resPickDate, 
    "resReturnDate" => $item->resReturnDate,
    "kits" => $item->pivot 
  ]; 
});

推荐阅读