Laravel Eloquent 集合属性

Ale*_*nio 1 php attributes model laravel eloquent

我正在使用 Laravel 5.2 开发 web 应用程序,但有一个我无法解决的问题。

我有一个扩展 Eloquent 模型的模型,但是当我尝试使用“where”输出我的数据库表时,例如

\App\MyModel::where('id_table', 23)->first();
Run Code Online (Sandbox Code Playgroud)

它返回一个包含许多目前对我无用的信息的集合,例如“受保护”、“密钥类型”……并且我的表的数据位于“属性”下。按照laravel的指南,我看到每个人都像我一样简单地使用 where 然后用 输出$mytable->myvalue,但这当然对我不起作用。

这是我正在谈论的集合的屏幕截图:

在此处输入图片说明

当我使用类似的东西时,我怎么能总是得到属性"::where()"

我试过了,getAttributes()但它给了我 500 错误。

Ale*_*nin 5

如果你只想获得几个属性,可以做很多事情。可能第一种方式对你来说是最好的:

使用pluck()

\App\MyModel::where('id_table', 23)->pluck('id', 'name');
Run Code Online (Sandbox Code Playgroud)

使用select()

\App\MyModel::select('id', 'name')->where('id_table', 23)->get();
Run Code Online (Sandbox Code Playgroud)

get()与参数一起使用:

\App\MyModel::where('id_table', 23)->get(['id', 'name']);
Run Code Online (Sandbox Code Playgroud)

如果你想获得 Eloquent 集合,然后才构建一个只有属性的数组,你可以使用toArray()

\App\MyModel::where('id_table', 23)->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

如果要为新集合获取某些属性,请pluck()在集合上使用:

$collection = \App\MyModel::where('id_table', 23)->get();
$names = $collection->pluck('name');
Run Code Online (Sandbox Code Playgroud)