Laravel Eloquent - 返回结果时忽略过滤器

时间:2017-03-15 15:24:41

标签: php laravel eloquent

我正在尝试使用他/她的帖子返回特定用户的(JSON)字符串。但是,Post模型包含几个API实现不感兴趣的列,我想从结果中排除这些列。

为什么在Posts关系中,以下内容仍然没有返回任何列 我已经尝试了多种方法来检索Post模型上的特定列。

$result = User::with([
    'posts' => function($q) {
        $q->addSelect('title', 'tag');
    }])
    ->where(['api' => 1, 'id' => $id])
    ->first(['id', 'username', 'role']);

return $result;

倾倒

$q->get()

显示我想要的内容,但返回的$ result不包含Post模型中的任何列。

我的Laravel版本是5.2

1 个答案:

答案 0 :(得分:0)

尝试将addSelect更改为select

$result = User::with([
    'posts' => function($q) {
        $q->select(['title', 'tag', 'user_id']); // You might have to also include `user_id` here
    }])
    // ->where(['api' => 1, 'id' => $id]) change this
    ->where('api', 1)
    ->where('id', $id)
    ->first();

return $result;

因为addSelect正在向现有选择中添加项目,而不是在select中指定您真正想要的内容。