查询只从Laravel中的目标列获取一个项目

时间:2018-06-06 12:05:45

标签: laravel eloquent

是否有任何查询只能从目标列中获取一个项目?下面没有工作?

App\Job::whereNotNull('deleted_at')->pluck('customer_name')->first()

我希望从'customer_name'获得一个项目名称

现在Laravel 5.6正在使用......

3 个答案:

答案 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()代替非空检查。

软删除文档:https://laravel.com/docs/5.6/eloquent#deleting-models

答案 2 :(得分:1)

试试这样:

$job = \App\Job::selectRaw('customer_name')
    ->whereNotNull('deleted_at')
    ->first();

并像$job->customer_name

一样使用它