Laravel eloquent 仅在一个模型实例中使给定属性可见
Laravel eloquent make visible only given attribute in one instance of model
我有来自
的实例模型
$model = Model::find(1);
例如这个实例总是return这些属性(有些来自$append):
-id
-name
-countRelation
-description
-created_at
-updated_at
我想要的是只从这个实例中检索 name
和 description
;
makeVisible 仅用于显示隐藏属性;我不想使用 makeHidden,因为如果在模型上添加新的追加属性,查找的结果可能会改变;
您可以使用 select
仅检索数据库中的某些列,它不会影响 append
,请参阅文档了解更多信息 Eloquent
$model = Model::find(1);
// to this
$model = Model::select('name', 'description')->find(1);
有关从数据库中获取数据的更多信息,请参阅 Query Builder
。
如果您只检索 名称 和 描述,那么您可以使用
$model = Model::select(['name', 'description'])->find(1);
您可以使用 select()
到 select 查询中的某些列。
$model = Model::select('name', 'description')->find(1);
https://laravel.com/docs/8.x/queries#specifying-a-select-clause
您还可以获取模型并在模型上使用函数。如果你只有一个模型,你可以使用 get()
.
$model = Model::find(1)->get('name', 'description');
如果你有 collection,你可以使用 ->map->only()
。这将唯一函数映射为 Collection.
中每个模型的回调
$models = $models->map->only(['name', 'description']);
由于您要追加访问器,因此限制 SELECT 语句不会阻止将访问器追加到序列化输出。不过,您可以使用 setVisible
来执行此操作:
$model->setVisible(['name', 'description']);
以这种方式设置可见内容将限制在模型的序列化输出中返回的属性、追加和关系。
我有来自
的实例模型$model = Model::find(1);
例如这个实例总是return这些属性(有些来自$append):
-id
-name
-countRelation
-description
-created_at
-updated_at
我想要的是只从这个实例中检索 name
和 description
;
makeVisible 仅用于显示隐藏属性;我不想使用 makeHidden,因为如果在模型上添加新的追加属性,查找的结果可能会改变;
您可以使用 select
仅检索数据库中的某些列,它不会影响 append
,请参阅文档了解更多信息 Eloquent
$model = Model::find(1);
// to this
$model = Model::select('name', 'description')->find(1);
有关从数据库中获取数据的更多信息,请参阅 Query Builder
。
如果您只检索 名称 和 描述,那么您可以使用
$model = Model::select(['name', 'description'])->find(1);
您可以使用 select()
到 select 查询中的某些列。
$model = Model::select('name', 'description')->find(1);
https://laravel.com/docs/8.x/queries#specifying-a-select-clause
您还可以获取模型并在模型上使用函数。如果你只有一个模型,你可以使用 get()
.
$model = Model::find(1)->get('name', 'description');
如果你有 collection,你可以使用 ->map->only()
。这将唯一函数映射为 Collection.
$models = $models->map->only(['name', 'description']);
由于您要追加访问器,因此限制 SELECT 语句不会阻止将访问器追加到序列化输出。不过,您可以使用 setVisible
来执行此操作:
$model->setVisible(['name', 'description']);
以这种方式设置可见内容将限制在模型的序列化输出中返回的属性、追加和关系。