【发布时间】:2021-12-22 20:45:23
【问题描述】:
使用最新的 Laravel,我编写了下一个查询:
$news = DB::table('news_content')
->join('news_permissions', 'news_content.id', '=', 'news_permissions.news_id')
->select('news_content.*')
->whereIn('news_permissions.group_id', $allPGs)
->get();
在连接中使用 Eloquent 似乎很复杂。 此查询返回 StdClasses 数组,但我需要模型数组,即 NewsContent 模型,以便在 Transformer 中进一步使用它。
铸造方式:
foreach($news as $item){
$result[] = (NewsContent)$item;
}
不起作用,从 StdClass 到 Model 的自定义转换的其他解决方案似乎不是最佳的。
有没有更好的方法让模型脱离 Laravels DB 查询?或者从 StdClass 到 Model 的转换过程比这个建议更短:Convert/cast an stdClass object to another class?
【问题讨论】:
-
为什么会有很多并发症?您实际上只需要将
DB::table('news_content')->替换为NewsContent:: -
不可能...我不知道,我错过了一些东西..我无语了。谢谢!我有办法接受您的评论作为答案吗?
-
另外,为什么不定义关系,那样你可能会失去
->join。 -
我已经定义了关系 $this->hasMany(NewsPermission::class, 'news_content_id');但是我现在如何摆脱加入呢?
标签: laravel eloquent model transformer