我有两个模型,Event和CoverEvent。封面事件只能链接到一个事件。 我能够使用SQL做到这一点。但是我想使用Eloquent以一种干净的方式使用它。 我该怎么办?
非常感谢!
这是SQL:
SELECT
`cover_events`.`id`,
`events`.`slug`,
`events`.`title`,
`events`.`subtitle`,
`events`.`image`,
`cover_events`.`columns`,
`cover_events`.`right_align`,
`cover_events`.`dark_text`,
`cover_events`.`large`
FROM
`cover_events`,
`events`
WHERE
`is_visible` LIKE 'true' AND
`cover_events`.`event_id` = `events`.`id`
结果应为以下数组:
[
[
"id" => 1,
"slug" => 'celine-dion-2020',
"title" => 'Celine Dion',
"subtitle" => '31 July 2020',
"image" => env('APP_URL') . '/img/celine_dion.jpg',
"columns" => 8,
"right_align" => false,
"dark_text" => true,
"large" => true
],
...
]
答案 0 :(得分:0)
您可以使用Laravel的集合merge()方法:
$events = Event::all()->merge(CoverEvent::all());
答案 1 :(得分:0)
雄辩的是,您只能使用关系来联接表。
在CoverEvent
类中使用关系
public function events()
{
return $this->hasOne('App\Models\Event', 'id', 'event_id');
}
使用检索结果
$res = CoverEvent::where('is_visible','true')->get();
foreach($res as $cover_event)
{
$cover_event->events->slug; // data from event class
$cover_event->columns; // data from cover_event class
}
答案 2 :(得分:0)
例如,如果您的父模型是ManageClass,子模态是DaysClassDetails:-
class ManageClass extends Authenticatable
{
public function classType()
{
return $this->hasMany('App\DaysClassDetails','day_id','id');
}
}
然后在控制器功能中输入此命令
ManageClass::with('classType')->get();