首页 文章

如何在laravel中选择特定列时返回附加字段

提问于
浏览
1

我在 User 模型中添加了一个 full_name 字段,如下所示:

protected $appends = ['full_name'];

public function getFullNameAttribute()
{
    return $this->name . ' ' . $this->family;
}

另一方面,我想选择并返回特定列以及full_name字段,如下所示:

return  User::all('user_id', 'username', 'full_name')

但是laravel得到了这个错误:

SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'full_name'(SQL:从user.deleted_at为null的用户中选择user_id,username,name,family,full_name)

我怎么能做我想做的事?

3 回答

  • 1

    您好,您可以使用这样的查询获得两个或更多列值,

    return  $user = User::select('user_id', 'username',DB::raw("CONCAT('first_name', " ",'last_name') AS full_name" 'full_name');
    

    或者如果你想从检索到的数组中连接列,你可以这样做,

    $user = User::all();
    foreach($user as $single){
       $user->full_name = $single->first_name ." ".$single->last_name
    }
    print_r($user);
    

    快乐的编码 .

  • 2

    您不能在查询中使用append属性 .

    full_name 只能在查询后访问.. bcoz full_name未附加结果

    $users = User::all();
    return $users[0]->full_name; //this requred getFullNameAttribute like above
    

    如果您仍想查询 . 在数据库查询中代替..这不需要$ append属性 . full_name已附加结果

    return User::select('user_id', 'username' , DB::raw('CONCAT(name, " ", family) AS full_name'))->get();
    
  • 1

    我认为你不需要在你的选择列中指定它..它已经附加了你的结果集 .

    如果你想要特定的列,你可能需要使用$ hidden属性并随时使它们可见 .

相关问题