laravel嵌套循环,里面那个循环怎么写?

类似于两级菜单,比如省和市,数据表是分开的,遍历省的时候,里面嵌套一个取出对应市的循环,外面省遍历可以运行,加上里面的循环有个省市对应关系,对应那里不知道怎么写,语法不是很清楚,能不能给个示例代码,只要是嵌套循环这种逻辑的代码就可以。最好包括数据表的关联、控制器、视图3部分代码。

perfectboook

我的想法是省和市两个表比如叫provincescities,两个model分别叫ProvinceCity。创建一个一对多的关系。在Province的model里面加入

public function cities(){
    return $this->hasMany(App\City::class);
}

在controller里面读取的时候:

$provinces=Province::with('cities')->get();

这样就一下子都读取出来了。再在view里面用两个foreach循环,外层循环$provinces变量,内层循环$provinces->cities

应该是可以的。我并没有实际测试,可能代码有问题。但是这个思路应该是没有问题的。

kanjiushi

1、模型
//Province model
public function cities(){
return $this->hasMany(City::class);
}

//City model
public function provinces(){
return $this->belongsTo(Province::class);
}

2、控制器
public function index()
{
$provinces=Province::with(‘cities’)->get();
return view(‘index’,compact(‘provinces’,‘cities’));
}

3、视图

@foreach ($provinces as province) {province->provinceName}
@foreach ($provinces->cities as city) {city->cityName}
@endforeach
@endforeach

好像有些问题,但不知道是哪里。

perfectboook

你搞这markdown。。

内层的foreach错了,内层的$provinces->cities改成$province->cities,多了一个s。是我上面说的有问题。再试下。下班鸟~

openwrtmail

在控制器里dd一下,先看逻辑对不对~~~

kanjiushi

可以了,谢谢 @perfectboook
ps:这个markdown是自动生成的,自动波不是这么准