我向full_name
模型添加了User
字段,如下所示:
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_id
,username
,name
,family
,来自full_name
users
users
deleted_at
为空的<RelativeLayout android:id="@+id/rel21" android:layout_width="match_parent" android:layout_height="300dp" android:layout_marginTop="110dp" android:background="#004667">
我怎样才能做我想做的事?
答案 0 :(得分:2)
我认为您不需要在选择列中指定它...它已经附加了您的结果集。
如果你想要特定的列,你可能需要使用$ hidden属性并在需要时使它们可见。
答案 1 :(得分:1)
您不能在查询中使用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();
答案 2 :(得分: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);
快乐的编码。