Мой контроллер считает, что мой магазин является идентификатором продуктов - PullRequest
0 голосов
/ 25 августа 2018

Мой контроллер не может прочитать, что «образец» - это магазин, а не продукт. У меня есть этот маршрут на моем web.php

    Route::get('{store}/products/{products}/edit', [
    'as'    => 'store.products.edit',
    'uses'  => 'ProductsController@edit',
    function($store) {
        $store = App\Models\Store::where('slug', $store)->firstOrFail();
    }
]);

и вот мой ProductsController @ edit

    public function edit($id)
{
    $product = Product::findOrFail($id);

    return view('view here', compact('product'));
}

когда я запускаю URL: http://127.0.0.1:8000/sample/products/022fe902-7f4d-4db1-b562-04a7eb9f5a68/edit

где sample - {store}, а 022fe902-7f4d-4db1-b562-04a7eb9f5a68 - {product}

Я получаю эту ошибку:

Нет результатов запроса для модели [App \ Models \ Product] sample

в моем запросе:

выберите * из products, где products. uuid = предел выборки 1

1 Ответ

0 голосов
/ 25 августа 2018

Если у вас есть 2 параметра, они должны быть в вашем контроллере в правильном порядке, поэтому вы должны иметь:

public function edit($store, $id)
{
    $product = Product::findOrFail($id);

    return view('view here', compact('product'));
}

Также, вероятно, вам здесь не нужно:

function($store) {
   $store = App\Models\Store::where('slug', $store)->firstOrFail();
}

для чего угодно, но, возможно, в вашем контроллере вы должны сделать что-то вроде этого:

$store = App\Models\Store::where('slug', $store)->firstOrFail();
$product = $store->products()->findOrFail($id);

Предполагая, что у вас есть продукт в этом магазине, и вы хотели бы убедиться, что кто-то не будет редактировать продукт, который являетсяназначен другому магазину.

...