Laravel的雄辩使可见只在模型的一个示例中给定的属性

ryevplcw  于 2023-08-08  发布在  其他
关注(0)|答案(5)|浏览(122)

我有示例模型来自

$model = Model::find(1);

字符串
例如,这个示例总是返回这些属性(有些来自$append):

-id
-name
-countRelation
-description
-created_at
-updated_at


我只想从这个示例中获取namedescription;
makeVisible只用于显示隐藏属性;我不想使用makeHidden,因为如果在模型上添加新的append属性,查找的结果可能会改变;

pzfprimi

pzfprimi1#

由于您要附加访问器,因此限制SELECT语句不会阻止将这些访问器附加到序列化输出。您可以使用setVisible来执行此操作:

$model->setVisible(['name', 'description']);

字符串
以这种方式设置可见内容将限制在Model的序列化输出中返回的属性、追加和关系。

eivgtgni

eivgtgni2#

您可以使用select只检索数据库中的某些列,它不会影响append,请参阅文档了解更多信息Eloquent

$model = Model::find(1);
// to this
$model = Model::select('name', 'description')->find(1);

字符串
请参阅Query Builder以了解有关从数据库获取数据的更多信息。

vzgqcmou

vzgqcmou3#

如果只检索namedescription,则可以使用

$model = Model::select(['name', 'description'])->find(1);

字符串

s2j5cfk0

s2j5cfk04#

可以使用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');


如果你有一个集合,你可以使用->map->only()。这将唯一的函数Map为Collection中每个Model的回调。

$models = $models->map->only(['name', 'description']);

14ifxucb

14ifxucb5#

我发现**makeVisible(array $column)**更适合我。

$model->makeVisible(['wallet']);

字符串

相关问题