首页 > 解决方案 > 使用 Eloquent 合并两个表(不使用 DB::Table)

问题描述

我有两个模型,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
    ],
    ...
]

标签: laraveleloquent

解决方案


例如,如果您的父模型是 ManageClass 并且子模式是 DaysClassDetails :-

class ManageClass extends Authenticatable
{   
   public function classType()
   {
      return $this->hasMany('App\DaysClassDetails','day_id','id');
   }
}

并在您的控制器功能中输入此命令

ManageClass::with('classType')->get();

推荐阅读