如何 return 当想要 select 中的特定列时附加字段 laravel
How to return appended field when want to select specific column in laravel
我向 User
模型添加了一个 full_name
字段,如下所示:
protected $appends = ['full_name'];
public function getFullNameAttribute()
{
return $this->name . ' ' . $this->family;
}
另一方面,我想 select 和 return 特定列以及 full_name 字段,如下所示:
return User::all('user_id', 'username', 'full_name')
但是 laravel 得到这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'field list' (SQL: select user_id
, username
, name
, family
, full_name
from users
where users
.deleted_at
is null)
我怎样才能做我想做的事?
我认为您不需要在 select 列中指定它。它已经附加在您的结果集中。
如果您想要特定的列,那么您可能需要使用 $hidden 属性并使它们在您需要时可见。
您不能在查询中使用追加属性。
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();
您好,您可以使用这样的查询连接两个或多个列值,
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);
编码愉快。
我向 User
模型添加了一个 full_name
字段,如下所示:
protected $appends = ['full_name'];
public function getFullNameAttribute()
{
return $this->name . ' ' . $this->family;
}
另一方面,我想 select 和 return 特定列以及 full_name 字段,如下所示:
return User::all('user_id', 'username', 'full_name')
但是 laravel 得到这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'field list' (SQL: select
user_id
,username
,name
,family
,full_name
fromusers
whereusers
.deleted_at
is null)
我怎样才能做我想做的事?
我认为您不需要在 select 列中指定它。它已经附加在您的结果集中。
如果您想要特定的列,那么您可能需要使用 $hidden 属性并使它们在您需要时可见。
您不能在查询中使用追加属性。
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();
您好,您可以使用这样的查询连接两个或多个列值,
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);
编码愉快。