我循环浏览一个Laravel集合,按created_at时间排序.每个项目的开始日期是created_at,并且结束日期是created_at以下项目的开始日期.如果它是最后一项,则该事件仅持续30天.
我目前的代码是这样的:
@foreach ($statushistory->where('itemid', $timelineitemid) as $hist)
[ '{{$hist->newstatus}}', new Date({{$hist->created_at->format('Y')}}, {{$hist->created_at->format('n')-1}}, {{$hist->created_at->format('j')}}), new Date({{$hist->created_at->format('Y')}}, {{$hist->created_at->format('n')-1}}, {{$hist->created_at->format('j')}}) ],
@endforeach
Run Code Online (Sandbox Code Playgroud)
正如您在此处所看到的,结束日期与开始日期相同,但我需要它作为下一个项目的开始日期.我以为会有一个帮手,比如last()我可以打电话的收藏品next()或其他任何东西.由于没有数字键,我不能只添加一个并抓住它.该项目按日期排序,唯一的ID类型字段是数据库中的字段,它是随机ID,如1434或1356.
关于如何获取下一个项目的start_date的任何想法,并检查我们是否在最后一项?我查看了PHP的next功能,但我不认为它能满足我的需求.
非常感谢
我一直在尝试使用laravel的集合函数mapWithKeys创建一个数组,但是我无法实现我所需要的.
这是我的代码,
$years = range(1900, date('Y'));
return collect($years)->mapWithKeys(function($value){
return [$value => $value];
})->all();
Run Code Online (Sandbox Code Playgroud)
预期结果
Array
(
[1900] => 1900
[1901] => 1901
[1902] => 1902
....
[2017] => 2017
)
Run Code Online (Sandbox Code Playgroud)
但我得到的是
Array
(
[0] => 1900
[1] => 1901
[2] => 1902
...
[117] => 2017
)
Run Code Online (Sandbox Code Playgroud) 如果我运行$collection->filter(myFilter),Laravel会为集合中的每个模型添加密钥这样烦人的事情,如下所示:
{
"4": {
"myObject": "data"
},
"7": {
"myObject": "data"
}
}
Run Code Online (Sandbox Code Playgroud)
如何摆脱"4"和"7",这是我的对象数组?
我运行的代码是:
$obj = Cars::with('brand')->orderBy('id')->get();
return $obj->filter(function($value, $key)
{
return $value->display == true;
});
Run Code Online (Sandbox Code Playgroud) 我正在构建一个小应用程序laravel 5.4,我有两个模型Contact,Companies我之间有很多很多关系,在我的Contact Model:
public function company()
{
return $this
->belongsToMany('App\Company', 'company_contact','contact_id', 'company_id')->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)
现在在某个地方,我希望拥有现有公司,即我想拥有latest() first().或者orderBy,created_by desc并获得first()排.为此,我必须做这样的事情:
$contacts = Contact::where('name', 'LIKE', '%'. $request->search_input. '%')
->orWhere('email', 'LIKE', '%'. $request->search_input. '%')
->orWhereHas('company', function ($q) use($request) {
$q->where('name', 'LIKE', '%'. $request->search_input. '%');
})
->with('company')
->orderBy('created_at', 'desc')
->paginate(50);
foreach ($contacts as $contact)
{
$contact->company = $contact->company()->withPivot('created_at')->orderBy('pivot_created_at', 'desc')->first();
}
Run Code Online (Sandbox Code Playgroud)
为了删除foreach我尝试在我的Contact模型中使用新关系:
public function currentCompany()
{
return $this
->belongsToMany('App\Company', …Run Code Online (Sandbox Code Playgroud) 我在 Laravel 中有一个更高阶的消息。它看起来像这样:
$category->scores->each->ratings->where('result.rating', '>=', 3)->count();
Run Code Online (Sandbox Code Playgroud)
Acategory有scores一个scorehasratings和 arating有一个result。
我想获得每个类别 的评分总数where >= 3。
使用我现在拥有的代码,最终结果始终为 0。
但是当我像这样循环时:
@foreach($categories as $category)
@foreach($category->scores as $score)
@foreach($score->ratings->where('result.rating', '>=', 3) as $rating)
{{ $rating->result->result_nl }}
@endforeach
@endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)
有3个评分结果。
我的高阶消息有什么问题?
这是我尝试分页的方式:
$posts = Post::all()->sortByDesc("created_at")->pagination(1);
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
方法 Illuminate\Database\Eloquent\Collection::pagination 不存在。
model-view-controller pagination laravel laravel-collection laravel-query-builder
各位,我想按字符串字母顺序对以下嵌套进行排序:collection
$collection = collect([\n ["name"=>"maroon"],\n ["name"=>"zoo"],\n ["name"=>"\xc3\xa1bel"],\n ["name"=>"\xc3\xa9lof"]\n])->sortBy("name");\nRun Code Online (Sandbox Code Playgroud)\n\n我期望:
\n\n1=> "\xc3\xa1bel"\n2=> "\xc3\xa9lof"\n3=> "maroon"\n4=> "zoo"\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的是:
\n\n1=> "maroon"\n2=> "zoo"\n3=> "\xc3\xa1bel"\n4=> "\xc3\xa9lof"\nRun Code Online (Sandbox Code Playgroud)\n\n我看到了一些 PHP 线程,但我很好奇是否有任何 Laravel 解决方法。谢谢。
\n我有以下查询
$outings = Outing::all()->groupBy(function ($item) {
return Carbon::parse($item['start'])->format('m/d/Y');
});
return response()->json([
'outings' => $outings
], 200);
Run Code Online (Sandbox Code Playgroud)
我怎样才能让郊游成为一个数组而不是一个对象。
如果我不将集合分组而只是这样做
Outing::all();
Run Code Online (Sandbox Code Playgroud)
它将返回一个数组而不是一个对象。Group by 正在做一些奇怪的事情。
如果我 DD($outings) 它实际上返回一个集合,所以我认为它在返回到浏览器而不是数组时被转换为一个对象是很奇怪的。
下面是我 DD($outings->toArray()) 时的输出
谢谢
以下是转储的集合:
//$collOne
Illuminate\Database\Eloquent\Collection {#3386
#items: array:6 [
4807 => "{"color_id":7,"size_id":4,"pack_id":null}"
4808 => "{"color_id":7,"size_id":2,"pack_id":null}"
4809 => "{"color_id":7,"size_id":6,"pack_id":null}"
4840 => "{"color_id":44,"size_id":4,"pack_id":null}"
4841 => "{"color_id":44,"size_id":6,"pack_id":null}"
4842 => "{"color_id":44,"size_id":2,"pack_id":null}"
]
}
//$collTwo
Illuminate\Database\Eloquent\Collection {#3403
#items: array:5 [
430 => "{"color_id":7,"size_id":4,"pack_id":null}"
431 => "{"color_id":7,"size_id":2,"pack_id":null}"
433 => "{"color_id":44,"size_id":4,"pack_id":null}"
434 => "{"color_id":44,"size_id":6,"pack_id":null}"
435 => "{"color_id":44,"size_id":2,"pack_id":null}"
]
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
{
"message": "Call to a member function getKey() on string",
"exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
"file": "[obfuscated]/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php",
"line": 281,
"trace": [
{
"file": "[obfuscated].php",
"line": 174,
"function": "diff",
"class": "Illuminate\\Database\\Eloquent\\Collection",
"type": "->" …Run Code Online (Sandbox Code Playgroud) 我声明了一个collect()数据类型的变量。我想迭代它,并更新每行上的特定列。
\n示例代码:
\n $a = collect([\n [\'one\' => 1, \'two\' => 2],\n [\'one\' => 3, \'two\' => 4],\n [\'one\' => 5, \'two\' => 6]\n ]);\n\n foreach ($a as $b) {\n $b[\'one\'] = 0;\n }\n\n dd($a);\nRun Code Online (Sandbox Code Playgroud)\n我不明白,为什么结果是这样的:
\n\nCollection {#510 \xe2\x96\xbc\n #items: array:3 [\xe2\x96\xbc\n 0 => array:2 [\xe2\x96\xbc\n "one" => 1\n "two" => 2\n ]\n 1 => array:2 [\xe2\x96\xbc\n "one" => 3\n "two" => 4\n ]\n 2 => array:2 [\xe2\x96\xbc\n "one" => 5\n "two" => 6\n ]\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n … laravel ×9
php ×7
laravel-5.3 ×2
collation ×1
json ×1
laravel-5 ×1
laravel-5.2 ×1
laravel-5.4 ×1
laravel-5.7 ×1
laravel-6 ×1
pagination ×1
sorting ×1
utf-8 ×1