【发布时间】:2021-10-06 12:23:00
【问题描述】:
我正在尝试编写一个查询,该查询从模型中选择列,然后从变形关系表中选择一些列。但我不知道选择列,关系表有不同的列。所以有些列没有 slug,有些则有。
public function index()
{
$menus = Menu::whereActive(true)
->with([
'menuable' => function ($q) {
// This gives error if there is no relation Pages model
$q->whereActive(true)->select('pages.id', 'pages.slug');
// Below not working
// if($q->type === Page::class){
// $q->whereActive(true)->select('pages.id', 'pages.slug');
// } else if($q->type === Category::class){
// $q->whereActive(true)->select('categories.id',
'categories.slug');
// }
}
])
->get(['id', 'menuable_id', 'menuable_type', 'name']);
$response = [
'menus' => $menus,
];
return $this->sendResponse($response);
}
模型
class Menu extends Model
{
public function menuable()
{
return $this->morphTo();
}
}
class Page extends Model
{
public function menu()
{
return $this->morphOne(Menu::class, 'menuable');
}
}
class Category extends Model
{
public function menu()
{
return $this->morphOne(Menu::class, 'menuable');
}
}
如何通过检查变形类型从变形关系中选择特定列?我正在使用 Laravel 版本 8。
【问题讨论】:
标签: php laravel eloquent relationship laravel-8