我们说我有一个"联系人"实体,我已经建立了模型,控制器,视图。所有CRUD操作都有效。 现在我想为联系人添加地址。同一联系人可能有多个地址,但每个地址仅属于一个联系人。有关地址的任何CRUD操作都嵌套到联系人。
我已经建立了模型,到目前为止一直很好。我已手动填充数据库,我想实现嵌套到contacts.show的addresses.index。
地址控制器方法应该是这样的:
public function index($ContactId)
{
$addresses = Addresses::where("contact_id",$ContactId)->paginate(10);
return view('addresses.index',compact('addresses',"$ContactId"))
->with('i', (request()->input('page', 1) - 1) * 5);
}
现在我想构建视图,但我迷失了,因为我无法找到任何有用的示例或教程(或者它们是用于非常旧的版本)
答案 0 :(得分:1)
我将地址完全嵌入用户,联系人,潜在客户,公司等,包括视图目录,因此users.address.index
将成为视图路径。
访问地址的路由也是嵌套的。如果它只是一个只有用户有地址的简单项目,那么url将是'/ users / 1 / addresses`来列出他们的地址。列出地址的控制器方法通常如下所示:
class AddressController {
public function index(Request $request, User $user) {
return view('users.addresses.index', ['addresses' => $user->addresses]);
}
}
资源路由使这一切变得简单,您只有两个路径文件条目,如下所示:
Route::resource('users', 'UserController');
Route::resource('users.addresses', 'AddressController');
如果我在一个可以有地址的应用程序中有多个模型,我会使Address
多态并进一步抽象出上述控制器。
https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations