Попытка получить свойство 'id' ошибки необъекта (система управления активами) - PullRequest
0 голосов
/ 21 января 2020

Весь мой проект полностью функционален, кроме функции создания. Когда я вошел в систему как обычный пользователь, я могу без проблем просматривать индекс одежды. Но когда я вошел в систему как администратор, я могу просматривать индекс только при первом создании новой одежды (к которой обычный пользователь не имеет доступа).

После этого первого раза, во второй раз Я добавляю новую одежду, появляется эта ошибка, и я пытаюсь понять это. Я только начинаю с Laravel.

Это код внутри моей индексной функции на контроллере:

$clothe = Clothe::all();

return view('clothes.index')->with('clothe',$clothe)->with('brand',Brand::all())->with('stock',Stock::all());

Марка относится к марке, которая является маркой одежда, в то время как сток - это модель запаса, которая относится к 2 частям данных: «Доступно» и «Недоступно» (обратите внимание, это работает, когда я вошел в систему только как обычный пользователь, но не при создании второго одеть как администратор)

На моем блейде индекса одежды по какой-то причине он читает $ brand, $ stock и $ одеть как не объекты.

Когда администратор создает вторую одежду, данные хранится, как я проверил в своей базе данных, единственная проблема - его отображение.

Это моя функция хранения:

public function store(Request $request, Clothe $clothe, Stock $stock)
{
    $this->authorize('create',$clothe,$stock);
        $request->validate([
        'name' => 'required|string',
        'price' => 'required|numeric',
        'brand-id' => 'required|numeric',
        'stock-id' => 'required|numeric',
        'description' => 'required|string',
        'image' => 'required|image|max:5000'
    ]);

    $clothe = new Clothe;

    $clothe->name = $request->input('name');
    $clothe->price = $request->input('price');
    $clothe->brand_id = $request->input('brand-id');
    $clothe->stock_id = $request->input('stock-id');
    $clothe->status_id = 1;
    $clothe->description = $request->input('description');
    $clothe->image = $request->image->store('public');

    $clothe->save();

    return redirect(route('clothes.index'));
}

, а это моя функция создания

public function create(Clothe $clothe)
{
    $this->authorize('create',$clothe);
    $brand = Brand::all();
    $stock = Stock::all();
    return view('clothes.create')->with('brand',$brand)->with('stock',$stock);
}

1 Ответ

1 голос
/ 22 января 2020

Я не уверен, почему вы делаете это

Строка: 34

@foreach($clothe as $clothe)

Я не знаю, если это то, что сбивает с толку PHP, когда иногда рассматривают '$ clothes' как коллекция вместо экземпляра, поскольку вы используете то же имя переменной, оно должно быть:

@foreach($clothes as $clothe) 
OR
@foreach($clothe as $singleclothe)

ИЛИ

$ clothe-> stock-> id должно быть $ clothe-> stock () -> id зависит от отношения, потому что вы можете вызывать его только для красноречивых отношений или функций, которые возвращают экземпляр отношения, в противном случае вам нужно использовать ().

...