Laravel 使用Eloquent(不使用DB::Table)合并两个表
我有两个模型,Event和CoverEvent。封面事件只能链接到一个事件。 我可以用SQL来做这件事。但我想用一种干净的方式,用雄辩的语言。 我该怎么做 非常感谢 下面是SQL:Laravel 使用Eloquent(不使用DB::Table)合并两个表,laravel,eloquent,Laravel,Eloquent,我有两个模型,Event和CoverEvent。封面事件只能链接到一个事件。 我可以用SQL来做这件事。但我想用一种干净的方式,用雄辩的语言。 我该怎么做 非常感谢 下面是SQL: SELECT `cover_events`.`id`, `events`.`slug`, `events`.`title`, `events`.`subtitle`, `events`.`image`, `cover_events`.`columns`, `co
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
],
...
]
您可以使用Laravel的收集方法:
在eloquent中,只能使用关系连接表 在
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
}
例如,如果父模型为ManageClass,子模型为DaysClassDetails:-
class ManageClass extends Authenticatable
{
public function classType()
{
return $this->hasMany('App\DaysClassDetails','day_id','id');
}
}
并在控制器功能中输入此命令
ManageClass::with('classType')->get();
谢谢你的帮助!我尝试了你的代码,但它正在数组中创建一个数组。我希望将事件数组作为主数组的一部分,而不是数组中的一个数组。我怎么能这样做?再次感谢,我很感激!如果不使用关系,则无法在Elount中联接表。如果要在单个数组中生成结果,则必须使用查询生成器。
ManageClass::with('classType')->get();