Php 在Laravel中遍历两个表
假设我有两张桌子。表1称为“房间”,表2称为“水果”。每个房间都有一个左右两侧,桌上的水果“水果”将放在房间的左侧或右侧 例如: 在“厨房”房间里,我们有两个香蕉在右边,五个香蕉在左边 我的表格符合以下示例: 房间 身份证名称 1厨房 两居室 果实 id | name | 1 |右| 1 |左| 2 |右| 2 |左 1 |苹果| 0 | 0 | 0 | 0 2 |香蕉| 2 | 5 | 0 | 0 正如你所看到的,“1_right”是“kitchenID_right”。在blade视图中,我想使用“右”和“左”的数据循环我的“房间”: 香蕉在哪里Php 在Laravel中遍历两个表,php,mysql,laravel,Php,Mysql,Laravel,假设我有两张桌子。表1称为“房间”,表2称为“水果”。每个房间都有一个左右两侧,桌上的水果“水果”将放在房间的左侧或右侧 例如: 在“厨房”房间里,我们有两个香蕉在右边,五个香蕉在左边 我的表格符合以下示例: 房间 身份证名称 1厨房 两居室 果实 id | name | 1 |右| 1 |左| 2 |右| 2 |左 1 |苹果| 0 | 0 | 0 | 0 2 |香蕉| 2 | 5 | 0 | 0 正如你所看到的,“1_right”是“kitchenID_right”。在blade视图中,我想
- 右厨房:2
- 厨房左:5
- 右卧室:0
- 左卧室:0
有没有关于我如何和拉威尔一起做这件事的想法?当然,我可以在blade视图中执行sql查询,但由于我知道这是一种不好的做法,我想知道是否有更干净的方法来实现相同的结果。如果您的房间是固定的,则不需要创建房间表。否则,在水果表中添加房间表的ID作为字段前缀不是一个好主意。你不能以适当的方式加入他们。你应该改变你的桌子。 您可以创建第三个映射表 e、 g
您还应该使用。首先,您应该按照以下方式重新构建数据库 房间
id , name
public function room()
{
return $this->belongsTo('App\Room');
}
**果实**
id , name , left_qty , right_qty , room_id
然后在您的模型室
public function fruits()
{
return $this->hasMany('App\Fruit');
}
在您的模型水果中
id , name
public function room()
{
return $this->belongsTo('App\Room');
}
所以在控制器中,您可以
$rooms = Room::all();
foreach($rooms as $room)
{
echo $room->name;
foreach($room->fruits as $fruit)
{
echo $fruit->name . ': (right)' . $fruit->right_qty . ' (left)' . $fruit->left_qty;
}
}
仅是@Koray Küpe所说的一点即兴创作,您可以按如下方式创建映射表,但保持房间表不变(因为房间可能并不总是固定的):
这样,在构建查询时,您可以更轻松地选择仅位于左侧或右侧房间的水果您可以建立关系谢谢您,Koray!我希望在没有旋转台的情况下也能达到同样的效果,因为房间已经修好了。谢谢你,Demonyowh!我的“水果”桌相当大,我试着绕过多排“相同的水果”。谢谢你,班古拉特克!在尝试绕过数据透视表之前,我更喜欢您的解决方案。唯一的区别是“left”和“right”不是布尔值,因为我可以直接在这些字段中存储水果的数量。