从数据库查询而不是 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);
}
使用最新的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);
}