Laravel中查询Student模型时如何关联加载settings对应的conversion表数据
第一步:在Settings模型中添加与Conversion表的关联
因为Settings表通过conversion_id关联Conversion表,属于从属关联,所以在app/Models/Settings.php中添加如下关联方法:
public function conversion() { // 第二个参数为Settings表的外键名,第三个参数为Conversion表的对应主键名,如主键为id可省略第三个参数 return $this->belongsTo(Conversion::class, 'conversion_id', 'id'); }
第二步:修改Student查询的预加载逻辑,使用嵌套预加载
Laravel支持通过.语法嵌套加载关联的关联,把原来的settings改成settings.conversion即可同时加载settings对应的conversion数据。
另外原代码中!$student的判断逻辑不生效,因为get()返回的是集合对象,永远不会为false,建议改为判断集合是否为空,修改后的完整代码如下:
$student = Student::with('studentIntroSurveys', 'settings.conversion', 'giftsSurveyResults', 'studentGiftSurveys', 'devotionals')->get(); if ($student->isEmpty()) { return response('No Data', 400); } else { return response($student); }
修改后返回的settings字段会自动追加conversion关联数据,示例如下:
settings: { setting_id: 4, student_id: 1, dark_mode: 1, conversion_id: 1, notification_enabled: 1, notification_time: "08:00:00", conversion: { // 此处为Conversion表的对应完整数据 "id": 1, // 其他自定义字段... } }
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

