我的模型Project
有一些$appends
和一些关系,如pages
,brands
,status
等。
在$appends
中pages
有Page
,在$appends
模型中有很多其他Project::find($id)
。现在,当我with
时,它会检索项目,它的页面以及属于Page的其他模型。
而且我还没有完成DB::table('projects')->where('id', $id)->get();
,因此对于每个页面都会触发大量查询。
不使用
task_start
有没有更好的方法只加载项目模型,没有关系,没有附加,没有通过Eloquent?
答案 0 :(得分:2)
你可以试试这个
User::where('user_id',$user_id)->get()->makeHidden(['full_name','start_end_date']);
答案 1 :(得分:1)
不幸的是,这不是它的工作原理。如果您想要删除附加内容,可按以下步骤操作:
$project = Project::find(1);
$project->setAppends([]);
return $project; //no values will be appended
但是,如果这些追加是在进行数据库调用而您不愿意,那么应该重新判断是否有附加值是有意义的。您是否认为将appends
始终包含在内是否有意义。
答案 2 :(得分:1)
对我有用:
var itemLetterSpacing = $scope.Obj.stylesheet["attribute-set"][1].attribute.filter(function(item) {
return item._name === "letter-spacing";
})[0];
if(!itemLetterSpacing) {
$scope.Obj.stylesheet["attribute-set"][1].attribute.push($scope.xslLetterSpacing);
}
console.log($scope.Obj);
答案 3 :(得分:1)
我尝试访问的第二个模型的 append 字段有问题,它陷入了无限循环。 因此,在用户模型中;
代替
return $this->organisation->is_enabled;
使用:
return $this->organisation->setAppends([])->is_enabled;
为我解决了问题,因为setAppends([])函数未附加不必要的关系
答案 4 :(得分:0)
// YourModel.php
public static $withoutAppends = false;
public function scopeWithoutAppends($query)
{
self::$withoutAppends = true;
return $query;
}
protected function getArrayableAppends()
{
if (self::$withoutAppends){
return [];
}
return parent::getArrayableAppends();
}
$result = YourModel::withoutAppends()->all();
答案 5 :(得分:0)
我不知道它是否适用于包含多条记录的集合。但是如果你需要它用于没有关系的单个模型,你可以
$project->attributesToArray();
https://laravel.com/docs/8.x/eloquent-serialization#serializing-to-arrays
答案 6 :(得分:-1)
您可以使用自定义查询来获取结果:
DB :: table('用户为') - >加入(' state_history为sh',' sh.user_id',' =',' u.id') - > where(' u.id',' =',$ id) - >加入('用户为u1',' sh.team_id',' =',' u1.id') - >选择(& #39; u.name',' sh.state',' sh.created_at',' u1.name as tname') - > orderBy( ' sh.created_at',' desc') - > get();