Eloquent嵌套关系使用SELECT语句时返回null

时间:2018-03-15 10:58:19

标签: php laravel eloquent lumen

我正在使用Slim与Eloquent,我遇到了一些错误,嵌套关系在选择特定列时返回null。 我的代码如下所示:

class User extends Model {}
class Task extends Model {
    public function publisher() {
        return $this->belongsTo('App\User', 'published_by');
    }
}
class Package extends Model {
    public function task() {
        return $this->belongsTo('App\Task', 'task_id');
    }
}

发生了一件奇怪的事情:

// Works well, I got publisher info and task info, but some columns are useless
// I just want to hide them and (may) improve performance in this case
Package::with('task.publisher:id,nick')->get();
// I got a null publisher
Package::with('task:id,title', 'task.publisher:id,nick')->get();

// Error: Unknown column `publisher`
Package::with('task:id,title,publisher')->get();
Package::with('task:id,title,publisher:id')->get();

我如何使用PackageTask发布商(Task's模型获得User模型,而只有Task和{的特定列{1}}会被退回吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

OP解决方案。

我猜选择Task的特定列会导致Task.published_bynull,以便User无法查询publisher()。解决方案如下所示:

// This works well
Package::with('task:id,title,published_by', 'task.publisher:id,nick')->get()