
为了避免使用循环,可以使用 eloquent 的 with() 和 wherehas() 方法。with() 方法用于预加载关联关系,wherehas() 方法用于在关联关系上添加约束条件。
以下是根据餐厅 ID 获取订单信息,并将订单中的菜品按照订单 ID 进行分组的代码示例:
use App\Models\Order;
use Illuminate\Database\Eloquent\Builder;
public function index($restaurantId)
{
$orders = Order::with('dishes')
->whereHas('dishes', function (Builder $dishes) use ($restaurantId) {
$dishes->where('restaurant_id', $restaurantId);
})
->get();
return response()->json($orders);
}代码解释:
上述代码将返回一个 JSON 格式的响应,其中包含所有与指定餐厅相关的订单信息,每个订单都包含了其关联的菜品列表。每个菜品都包含 dish_id 和 quantity 信息,这些信息来自 dish_order 中间表。
PHPSCUP是一套追求简洁易用很务实的系统!PHPSCUP能满足大多数的初级企业网站用户。系统内置企业简介模块、新闻模块、产品模块、人才模块、在线留言模块、单篇文章模块、友情链接模块、单篇文章模块、图片轮播模块、下载模块。遵循SEO标准,通过模板或者定制为企业提供专业的营销型网站,该系统采用PHP+MySQL组合开发,具备安全、高效、稳定等基本特性。主要功能特色体现在:权限分配:权限分配功能非常
0
通过使用 Laravel Eloquent 的 with() 和 whereHas() 方法,可以简洁高效地查询并组织关联数据。这种方法不仅可以提高代码的可读性,还可以避免 N+1 查询问题,提升应用程序的性能。在处理复杂的关系型数据时,灵活运用 Eloquent 的关联查询功能,可以事半功倍。
以上就是通过 Eloquent 模型关联实现订单菜品分组的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号