是否有任何查询只能从目标列中获取一个项目?下面没有工作?
App\Job::whereNotNull('deleted_at')->pluck('customer_name')->first()
我希望从'customer_name'获得一个项目名称
现在Laravel 5.6正在使用......
答案 0 :(得分:3)
使用eloquent时,使用first
将为您提供单个项目,第一个与您的查询匹配的记录。然后,您可以访问该项目的属性:
// This will give you an instance of App\Job (or null)
$job = App\Job::whereNotNull('deleted_at')->first();
// You can then access the customer_name property on the object
$job->customer_name;
如果您只想在运行查询时检索该单个列,则可以将列数组传递给first
。
App\Job::whereNotNull('deleted_at')->first(['customer_name']);
假设您在模型中使用SoftDeletes
特征,您的查询会自动在所有查询中添加额外的检查,以确保deleted_at
为空。因此,当您执行->whereNotNull('deleted_at')
时,您还要添加一个附加条款以确保记录不为空,这样您就不会返回任何记录。
如果您只想查看已删除的记录,可以使用onlyTrashed()
:
App\Job::onlyTrashed()->first();
答案 1 :(得分:2)
有一种内置方法:value('field')
App\Job::whereNotNull('deleted_at')->value('customer_name');
文档:https://laravel.com/docs/5.6/queries,查找“从表中检索单行/列”
如果您只是一个字段但仍然是行,则可以改为使用->select('field')
。
由于您只需要已删除的项目,因此您可以使用->onlyTrashed()
代替非空检查。
答案 2 :(得分:1)
试试这样:
$job = \App\Job::selectRaw('customer_name')
->whereNotNull('deleted_at')
->first();
并像$job->customer_name