从数据库查询而不是 StdClass 获取模型

Getting Model from DB query instead of StdClass

使用最新的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 与 join 一起使用似乎很复杂。 此查询 returns StdClasses 数组,但我需要模型数组,即 NewsContent 模型,以便在 Transformer 中进一步使用它。

铸造像:

    foreach($news as $item){
            $result[] = (NewsContent)$item;
    }

不起作用,从 StdClass 到 Model 的自定义转换的其他解决方案似乎不是最优的。

是否有更好的方法从 Laravel 的数据库查询中获取模型?或者比这个建议更短的从 StdClass 到 Model 的铸造过程:Convert/cast an stdClass object to another class?

Using Eloquent with join seems alot of complication

为什么,您只需要调用您的查询生成器抛出您的模型:

 $news = NewsContent::join('news_permissions', 'news_content.id', '=', 'news_permissions.news_id')
            ->select('news_content.*')
            ->whereIn('news_permissions.group_id', $allPGs)
            ->get();

请注意 Eloquent 在 Model.php 摘要中内部使用查询生成器 class:

  * @param  \Illuminate\Database\Query\Builder  $query
     * @return \Illuminate\Database\Eloquent\Builder|static
     */

    public function newEloquentBuilder($query)
    {
        return new Builder($query);
    }