【问题标题】:how to add extra element in laravel collection如何在 laravel 集合中添加额外的元素
【发布时间】:2017-12-21 19:32:22
【问题描述】:
我想知道如何在 laravel 集合中添加额外的列,从数据库返回。例如。
用户模型
用户->id
用户->名称
预订模式
预订->user_id
预订->id
现在
$users = User::all();
$user_reservation = Reservation::all();
foreach ($users as $user)
{
foreach ($user_reservation as $ur)
{
if ($user->id == $ur->user_id)
{
//Add extra column in to the users model
}
}
}
【问题讨论】:
标签:
mysql
laravel-5
laravel-collection
【解决方案1】:
$user->push(['extra_column' => $value]);
【解决方案2】:
Laravel 有一个名为 $appends 的访问器。如何使用它
在要添加自定义集合的模型中定义 $append。在我的情况下用户模型
class User extends Model{
protected $appends = ['user_eservation'];
public function getUserReservations($id)
{
return User::where('id', $id)->first();
}
public function getUserReservationAttribute()
{
return $this->getUserReservations(Auth::user()->id);
}
}
现在您可以通过调用getUserReservatoin函数来调用数据库中不可用的自定义属性。
例如
$users = 用户::all();
$user_reservation = 预订::all();
foreach ($users as $user)
{
foreach ($user_reservation as $ur)
{
if ($user->id == $ur->user_id)
{
$user->getUserReservations();
}
}
}