我想对显示的数据进行过滤,但是当我向数据添加位置时出现问题。
未来的计划我想添加if isset $请求名称、日期等。但在这一点上受到限制。
$matchs =Matchs::where('type', 'sparring')->where('status','Pending')->whereNull('deleted_at')->get()->toArray();
$data=[];
foreach ($matchs as $key) {
$lawan = Matchs::where('id', $key['id'])->first()->ToArray();
$pertandingan = Sparring::where('match_id', $key['id'])->first()->ToArray();
$dua_arah = MatchTwoTeam::where('match_id', $key['id'])->first()->ToArray();
$tim = Team::where('id', $dua_arah['home_team'])->first()->ToArray();
$transfer['name']=$tim['name'];
$transfer['city']=$lawan['city'];
$transfer['field_cost']=$pertandingan['field_cost'];
$transfer['referee_cost']=$pertandingan['referee_cost'];
$transfer['logo_path']=$tim['logo_path'];
$transfer['nama_lapangan']=$lawan['nama_lapangan'];
$transfer['date']=$lawan['date'];
array_push($data,$transfer);
array_push($data,$pertandingan);
}
$data->where('name', 'LIKE', '%'.'football'.'%')->get()->toArray();
$data = array_search('football', array_column($data, 'name'));
$tittle="Sparring";
return view('mode.sparring',[
'tittle' => $tittle,
'data' => $data,
]);
您正在尝试在数组中调用
where
,这是不可能的。
正如您在代码的第一行中看到的,您正在调用模型类中的
where
方法。与 Matchs::where('type', 'sparring')
一样,这是可能的,因为 Matchs
是一个模型类。
现在,即使您使用的是数组,您也可以运行 where。您可以将这一天转换为集合,然后在该集合上使用数组。 如下:
collect($data)->where('name', 'football')->toArray();
这里
collect()
会将$data
数组转换为collectio,然后运行collectio中的where()
方法,然后toArray()
将其更改回数组。但不幸的是,集合类中没有 like
运算符。请参阅此处 Laravel 集合中的可用方法列表:https://laravel.com/docs/8.x/collections#available-methods
有一种方法可以做你想做的事。据我了解,您想要过滤
Matches
,其中 Team
名称中含有 footbal
。你可以这样做:
Matchs::where('type', 'sparring')
->where('status','Pending')
->whereNull('deleted_at')
->whereHas('team', function($team) {
return $team->where('name', 'LIKE', '%'.'football'.'%')
})
->get()
->toArray();
所以,在这里我们只能得到那些
Mathes
,其中 Team
的名称包含 football
。
给你的建议很少,因为你似乎是 Laravel 的新手:
Matchs
应该是Match
。您团队模型的名称是 Team
是正确的。toArray()
,因为你不需要它。当您调用 get()
时,它将返回集合对象,在大多数情况下,该对象比数组更具可读性和更强大。like
使用 whereHas
的代码只有在您在 team
类中正确定义了 Matchs
关系时才有效。因此,在模型中定义关系也很重要。如果这样做,您甚至不需要 for
循环以及该循环中其他模型中的所有 where
。您可以在一个查询中完成所有关系的操作。