路线:
我有一个嵌套的资源路由。我用这个来声明:
Route::resource('orders.comments', \App\Http\Controllers\Backend\OrderCommentController::class)
->parameters([
'comments' => 'orderComment:id'
])
->except(['show']);
模型与关系:
我有两个模型, Order
及 OrderComment
. Order
型号:
public function comments()
{
return $this->hasMany(OrderComment::class);
}
``` `OrderComment` 型号:
public function order()
{
return $this->belongsTo(Order::class);
}
### ordercomment控制器编辑方法签名
public function edit(Order $order, OrderComment $orderComment)
### 实际问题
每当我想要编辑订单注解时,通过访问 `/orders/1/comments/1/edit` ,我得到一个错误:
Call to undefined method App\Models\Order::orderComments()
我假设这是基于我在资源中设置的参数。但我需要的参数是 `orderComment` 而不是 `comment` ,由于 `$orderComment` 争论 `OrderCommentController@edit` . 这主要是由于名称约定。
### 我尝试/考虑过的可能排除的解决方案:
重命名 `OrderComment` 模仿 `Comment` . 这是不可能的,因为还有其他注解模型,具有不同的列,所以它也不能是多态的。
重命名 `comments` 关系 `orderComments` . 这是一个解决方案,但不是首选方案。这是因为 `$order->comments` 看起来比以前更优雅 `$order->orderComments` 等
### 结论/问题
那么,有没有可能“告诉”拉雷维尔它应该寻找一个叫做 `comments` 而不是 `orderComments` ?
暂无答案!
目前还没有任何答案,快来回答吧!