You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何从DB查询获取Model实例而非StdClass对象

最优方案:直接用模型启动查询(无需定义关联)

你完全不需要改用DB门面写查询,直接从NewsContent模型启动查询构建器即可,写法和你原有DB查询几乎完全一致,返回结果直接就是模型实例集合:

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

这种方案没有额外性能损耗,也不需要你额外编写Eloquent关联定义,和你原来的实现逻辑完全一致,是首选方案。

备选方案:StdClass批量转模型(原生方法)

如果你已经拿到了DB查询返回的StdClass结果,用Laravel原生提供的hydrate方法一行就能完成转换,不需要自定义循环逻辑:

// $news 是DB查询返回的StdClass对象集合
$newsModels = NewsContent::hydrate($news->toArray());

你之前尝试的强转写法本身不符合PHP语法规则,PHP不支持直接将StdClass强转为自定义类对象,所以无法生效。


内容的提问来源于stack exchange,提问作者SubjectX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:15:02