$menu_list = Menu::leftJoin('company_menu', function ($q) {
$q->on('menus.id', '=', 'company_menu.menu_id')
->where('company_id', $this->_company->id);
})
->select('id')
->selectRaw('(CASE WHEN is_enabled IS NULL THEN 1 ELSE is_enabled END) AS is_enabled,
(CASE WHEN company_menu.title IS NULL THEN menus.title ELSE company_menu.title END) AS title,
(CASE WHEN company_menu.title IS NULL THEN 0 ELSE 1 END) AS is_title')
->get()
こちらはmenuテーブルにcompany_menuテーブルをleftjoinしてカラムを別名で作ったものです。
取得できるカラムデータは以下
id,is_enabled,title,is_title
このうち、is_titleはどのDBカラムにも存在しないものですが、getAttributeの中で利用することができます。
//MenuのEloquentModel
public function getTitleAttribute($title)
{
return $this->is_title ? $title : __($title);
}
このようにエイリアスを利用しつつgetAttributeを利用することで、bladeで条件判定をする必要なく、柔軟に利用することが可能。
コメント