gpt4 book ai didi

php - laravel:将多对多(但只有一个相关项)mysql 查询转换为 laravel 查询

转载 作者:行者123 更新时间:2023-11-29 23:31:31 24 4
gpt4 key购买 nike

嗨,我在将我一直在处理的 mysql 查询转换为 laravel Eloquent 查询时遇到问题,需要一些帮助。我有一个预订表,它链接到具有多对多关系的产品表。我想提取所有预订以及它找到的第一个产品,无论有多少产品与预订相关。这是我的 sql:

SELECT reservations.id,
reservations.play_date,
reservations.group_size,
reservations.status,
reservations.event_title,
t4.product_id,
t4.id AS link_id,
p1.name,
CONCAT_WS(" ", customers.first_name, customers.last_name, customers.group_name) AS customerName,
reservations.event_type
FROM reservations
LEFT JOIN customers ON reservations.customer_id = customers.id
LEFT JOIN
(SELECT *
FROM product_reservation AS t3
GROUP BY t3.reservation_id ) AS t4 ON t4.reservation_id = reservations.id
LEFT JOIN products AS p1 ON t4.product_id = p1.id

我可以将其作为原始查询,但会生成一个包含结果的数组 - 我需要能够创建一个查询对象,以便我可以在结果上使用另一个模块有没有一种 Eloquent 方法来做到这一点 - 或者我怎样才能让这个查询在 laravel 中工作?谢谢

最佳答案

是的,您可以使用 Eloquent 关系。它们看起来像这样......

class Reservation extends Eloquent
{
public function products()
{
return $this->belongsToMany('Product');
}
}

class Product
{
public function reservations()
{
return $this->belongsToMany('Reservation');
}
}

$reservations = Reservation::with(array('products', function($q) {
$q->take(1);
}))->get();

foreach($reservations as $reservation) {
echo $reservation->name;
foreach($reservation->products as $product) {
echo $product->description;
}
}

关于php - laravel:将多对多(但只有一个相关项)mysql 查询转换为 laravel 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com