【问题标题】:how to fetch only one row with eloquent relation? -Laravel如何仅获取具有雄辩关系的一行? -Laravel
【发布时间】:2022-01-07 12:22:34
【问题描述】:

我只想从LiveClasses 表中选择具有id 列值$id 的行和从timingSlot 表中选择具有id 列值作为@ 列值的timeSlot 值的行987654329@ 在Livelcass 表中。我尝试如下。这给出了LiveClasses 表中的所有行而不是一行。我该如何解决这个问题。我能得到一些帮助吗?

 $data = LiveClasses::find($id)->with('timingSlot:id,timeSlot')->get()->toArray();

LiveClasses 模型

public function timingSlot(){
        return $this->hasMany(TimingSlot::class,'id','timeSlotId');
    }

LiveClass 表

id name mob timeSlotId
1 Ar 111 1

时隙表

id timeSlot date
1 1 A 10/12/21
2 2B 11/12/21

预期结果数据:

id:1,
name :Ar,
mob :111,
timeSlotId :1
timingSlot: [timeSlot :1A]

【问题讨论】:

  • 你们的关系可能是一对一而不是一对多?

标签: php laravel eloquent laravel-8 query-builder


【解决方案1】:

您可以定义1 to 1 关系而不是1 to many

或尝试以下方法可能会起作用

$data = LiveClasses::query()
        ->where('id', $id)
        ->with(['timingSlot' => function($query){
            $query->select(['id','timeSlot'])->limit(1);
        }])
        ->get()
        ->toArray();

【讨论】:

  • 我现在定义了一个hasOne 属性。它现在返回timingSlot 关系的null 数据
  • 交换 hasOne 关系中的键
猜你喜欢
  • 2020-12-02
  • 2016-07-22
  • 2019-07-16
  • 1970-01-01
  • 2014-03-26
  • 2015-03-14
  • 2018-11-28
  • 2015-01-11
  • 2021-06-03
相关资源
最近更新 更多