Спасибо, ребята, что помогли мне в прошлый раз.проблема, с которой я сейчас сталкиваюсь, связана с моим лезвием обзора.Этот index.blade полностью работает, прежде чем я создаю, редактирую и создаю блейд.После того, как я закончил два других блейда, я заметил, что index.blade теперь имеет Пытается получить свойство необъекта
, что я пытаюсь сделать, это отобразить категорию вТаблица продуктов.
Таблица продуктов идентификатор, имя, категории_идентификатора Таблица категорий идентификатор, имя
Продукты Модель
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Products extends Model
{
use SoftDeletes;
protected $fillable = [
'product_code',
'name',
'categories_id',
'wh1_limit_warning',
'wh2_limit_warning',
'price',
'selling_price',
'user_id'
];
protected $dates = ['deleted_at'];
public function category() {
// return $this->belongsTo(Categories::class);
return $this->belongsTo('App\Categories', 'categories_id', 'id');
}
}
Категории Модель
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Categories extends Model
{
protected $fillable = ['name'];
public function Products()
{
// return $this->hasMany(Products::class);
return $this->hasMany('App\Products', 'categories_id');
}
}
Указательный клинок
<div class="panel-body">
<div class="result-set">
<table class="table table-bordered table-striped table-hover text-center" id="data-table">
<thead>
<tr>
<th class="col-md-1 text-center">Code</th>
<th class="col-md-2 text-center">Name</th>
<th class="col-md-2 text-center">Category</th>
<th class="col-md-1 text-center"><small>Warehouse 1<br/>Limit Warning</small></th>
<th class="col-md-1 text-center"><small>Warehouse 2<br/>Limit Warning<small></th>
<th class="col-md-1 text-center">Price</th>
<th class="col-md-1 text-center">Selling Price</th>
@can('update_product', 'delete_product')
<th class="text-center col-md-1 text-center">Actions</th>
@endcan
</tr>
</thead>
<tbody>
@foreach($products as $product)
<tr>
<td>{{ $product->product_code }}</td>
<td>{{ $product->name }}</td>
<td><b>{{ $product->category->name }}</b></td>
<td>{{ $product->wh1_limit_warning }}</td>
<td>{{ $product->wh2_limit_warning }}</td>
<td>{{ $product->price }}</td>
<td>{{ $product->selling_price }}</td>
@can('update_product')
<td>
<button data-toggle="tooltip" title="Update product" onclick="window.location='{{ route('products.edit', $product) }}'" name="edit" class="action-button edit">
<i class="fas fa-edit"></i>
</button>
<form action="{{ route('products.delete', $product )}}" method="post">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button data-toggle="tooltip" title="Delete product" type="submit" class="action-button delete" onclick="return confirm('Are you sure you want to delete this?');"><i class="fas fa-trash-alt"></i></button>
</form>
</td>
@endcan
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
Контроллер продуктов
<?php
namespace App\Http\Controllers;
use App\Products;
use App\Categories;
use Illuminate\Http\Request;
class ProductsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$products = Products::with('category')->get();
return view('products.index')->with('products',$products);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$products = Products::with('category')->get();
$categories = Categories::get()->pluck('name','id');
return view('products.create',compact('categories'))->with('products', $products);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$products = Products::create($request->only(
'product_code',
'name',
'categories_id',
'wh1_limit_warning',
'wh2_limit_warning',
'price',
'selling_price',
'user_id'
));
$this->validate($request, [
'product_code' => '',
'name' => '',
'categories_id' => 'required|integer',
'wh1_limit_warning' => 'required|integer',
'wh2_limit_warning' => 'required|integer',
'price' => 'required|integer',
'selling_price' => 'required|integer',
'user_id' => 'required|integer',
]);
flash('New product added!');
return redirect(route('products.index'));
}
/**
* Display the specified resource.
*
* @param \App\Products $products
* @return \Illuminate\Http\Response
*/
public function show(Products $products)
{
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Products $products
* @return \Illuminate\Http\Response
*/
public function edit(Products $product)
{
$products = Products::all();
$categories = Categories::all('name','id');
return view('products.edit',compact('product','categories'));
//return view('products.edit',compact('product','categories'))->with('products', $products);
// return view('products.edit', compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Products $products
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Products $product)
{
$product->update($request->only(
'product_code',
'name',
'categories_id',
'wh1_limit_warning',
'wh2_limit_warning',
'price',
'selling_price',
'user_id'
));
return redirect()->route('products.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Products $products
* @return \Illuminate\Http\Response
*/
public function destroy(Products $product)
{
$product->delete();
return redirect(route('products.index'));
}
}
Я не вижу, где я ошибся, потому что я ничего не изменил в public function index () моего контроллера.Опять же, РЕДАКТИРОВАТЬ и Создать работает, я смог отобразить категории в выпадающем списке без каких-либо проблем, только этот index.blade.
Пожалуйста, посмотрите этот скриншот проблемы
Заранее большое спасибо!