【发布时间】:2017-02-21 02:06:49
【问题描述】:
我从我所做的查询中创建特定数据的集合,但我需要创建一个新集合,其中只有一些具有自定义名称属性的数据,我使用的是数组,但我需要在集合中创建它,因为它更容易格式化数据并访问一些集合方法。
我目前的代码是这样的:
$activity = [];
$temp = [];
$calculations = collect($user->calculations()
->withTrashed()
->orderBy('updated_at', 'desc')
->get());
foreach($calculations as $calculation){
$temp['type'] = "calculation";
$temp['name'] = $calculation->name;
$user = $this->getUserById($calculation->pivot->user_id);
$temp['user'] = $user->name ." ".$user->surname;
if($calculation->created_at == $calculation->updated_at && $calculation->deleted_at == null)
{
$temp['operation'] = "saved";
$temp['date'] = $calculation->created_at;
$temp['diff'] = Carbon::parse($calculation->created_at)->diffForHumans();
}elseif($calculation->created_at != $calculation->updated_at && $calculation->deleted_at != null)
{
$temp['operation'] = "changed";
$temp['date'] = $calculation->updated_at;
$temp['diff'] = Carbon::parse($calculation->updated_at)->diffForHumans();
}else{
$temp['operation'] = "delete";
$temp['date'] = $calculation->deleted_at;
$temp['diff'] = Carbon::parse($calculation->deleted_at)->diffForHumans();
}
array_push($activity,$temp);
}
$conditions = collect($user->conditions()
->withTrashed()
->orderBy('updated_at', 'desc')
->get());
foreach($conditions as $condition){
$temp['type'] = "condition";
$temp['name'] = $condition->name;
$user = $this->getUserById($condition->user_id);
$temp['user'] = $user->name ." ".$user->surname;
if($condition->created_at == $condition->updated_at && $condition->deleted_at == null)
{
$temp['operation'] = "saved";
$temp['date'] = $condition->created_at;
$temp['diff'] = Carbon::parse($condition->created_at)->diffForHumans();
}elseif($condition->created_at != $condition->updated_at && $condition->deleted_at != null)
{
$temp['operation'] = "alterado";
$temp['date'] = $condition->updated_at;
$temp['diff'] = Carbon::parse($condition->updated_at)->diffForHumans();
}else{
$temp['operation'] = "delete it";
$temp['date'] = $condition->deleted_at;
$temp['diff'] = Carbon::parse($condition->deleted_at)->diffForHumans();
}
array_push($activity,$temp);
我已经将 eloquent 查询转换为“收集”,但是我无法创建新的集合,我需要使用数组方法来代替,我应该使用集合方法来创建它们。
基本上我的主要原因是我需要合并“条件”和“计算”,而不是能够为集合排序数据时间。
【问题讨论】:
-
查询构建器已经返回了结果集合,因此不需要起始
collect(query...) -
上面的代码有什么问题?我同意@Pedro
-
你想把
$activity数组转换成collection吗? -
@VaibhavrajRoham 没什么大不了的。我只是说他将两个查询的结果包装在
collect(result)中,这是完全不必要的,因为查询结果已经自动转换为集合。 -
对不起@devk 我应该说我同意你的看法。抱歉打错了
标签: php laravel laravel-5 eloquent