我目前正在处理一个页面,以选择一个菜单来订购下个工作日。 您可以在菜单1和菜单2之间进行选择。
为此,我制作了一个名为Menu的模型,在其中查询了本周的不同菜单。
$menus1 = Menu::where('date', '>=', $start->toDateString())
->where('date', '<=', $end->toDateString())
->where('menu_nr', '=', '1')
->orderByRaw('date asc')
->get();
$menus2 = Menu::where('date', '>=', $start->toDateString())
->where('date', '<=', $end->toDateString())
->where('menu_nr', '=', '2')
->orderByRaw('date asc')
->get();
现在我有2个菜单模型集合。我们的目标是在网页上再次查询该集合,并在其中显示模型的数据。
例如:
$menus1->where('date',$date)->starter_name;
$menus1->where('date',$date)->main_name;
现在我遇到了问题,我无法解决它们。它总是返回一个空的Collection。
答案 0 :(得分:1)
我刚刚意识到,我需要将“日期”列与“碳日期”进行比较,因为数据类型为“日期”。
所以我做到了:
$menu = $menus1->where('date', \Carbon\Carbon::parse($date))->first();
首先,因为ther仅仅是一个。 现在我可以通过以下方式获取数据:
$menu->starter_name
$menu->main_name
答案 1 :(得分:0)
u正在尝试从集合中获取一项,请尝试以下操作:
$menus1->where('date',$date)->first()->starter_name;
答案 2 :(得分:0)
由于您正在使用Laravel的get()方法,因此应该循环浏览菜单。
像这样:
foreach ($menus1 as $m1) {
if ($m1->date != $date) continue;
echo $m1->starter_name . ' ' . $m1->main_name;
}
foreach ($menus2 as $m2) {
if ($m2->date != $date) continue;
echo $m2->starter_name . ' ' . $m2->main_name;
}
或者更好的方法是使用filter方法,该方法使用给定的回调过滤集合,仅保留那些通过给定的真实性测试的项目。然后使用each()方法相应地遍历它:
$menus1->filter(function ($m1) use ($date) {
return $m1->date == $date;
})->each(function($m1) {
echo $m1->starter_name . ' ' . $m1->main_name;
});
$menus2->filter(function ($m2) use ($date) {
return $m2->date == $date;
})->each(function($m2) {
echo $m2->starter_name . ' ' . $m2->main_name;
});