Laravel 急切加载特定列错误

Posted

技术标签:

【中文标题】Laravel 急切加载特定列错误【英文标题】:Laravel eager loading specific columns error 【发布时间】:2020-01-13 23:07:10 【问题描述】:

我有自定义代码,我必须从关系数据中获取特定列:

$jobs = Job::with('user:id, name')
           ->where('type', 0)
           ->where('status', 1)
           ->orderBy('updated_at', 'DESC')
           ->get();

当我运行此代码时,Laravel 返回错误消息:

SQLSTATE[42S22]:未找到列:1054 中的未知列“名称” '字段列表'

我该如何解决这个错误?

【问题讨论】:

用户表中有名称字段吗? 这是我的$fillable 变量值:protected $fillable = ['name', 'email', 'password', 'phone', 'status']; Unknown column ' name',有空格' name' @AndreasHunter 空间是个问题,所以只删除空间。 【参考方案1】:

在这段代码中有空格with('user:id, name')。问题是空间。 试试这个

$jobs = Job::with('user:id,name')
    ->where('type', 0)
    ->where('status', 1)
    ->orderBy('updated_at', 'DESC')
    ->get();

【讨论】:

【参考方案2】:

可以通过在 with() 中传递一个闭包函数作为数组的第二个索引来完成,例如

$jobs = Job::with(['user' =>  function($q)
                $q->select('id','name');
            ])->where('type', 0)
               ->where('status', 1)
               ->orderBy('updated_at', 'DESC')
               ->get();

【讨论】:

以上是关于Laravel 急切加载特定列错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在急切加载时使用 Eloquent 选择特定列

Laravel Eager Loading - 仅加载特定列

Laravel 约束急切加载 - 如果关系列应用限制!= 1

Laravel 动态关系 - 在急切加载时访问模型属性

从 5.1 迁移到 5.3 时急切加载关系的 Laravel 错误

Laravel 急切加载多个模型,它们都在同一个表中