php - 试图获取“名称”非对象的属性
问题描述
我的模型:
class Product extends Model
{
protected $table = 'Products';
protected $fillable = ['product-code', 'type', 'name', 'description', 'price', 'discount', 'image', 'image_alt'];
public function products()
{
return $this->hasMany('App\ProductSpecifics');
}
}
控制器:
public function find_product(Request $request)
{
$this->validate($request, [
'code' => 'required|max:50|string'
]);
$Product = Product::where('product-code', '=', $request->get('code'))->first();
if(strlen($Product->name > 0))
{
return view('edit_product', compact('Product'));
}
return redirect()->route('edit_product')->with('fail', 'Failed to find the product.');
}
形式:
<form action="{{route('find_product')}}" method="post">
<div class="form-group">
<label for="name" class="control-label">Product Code</label>
<input class="form-control" name="code" id="product_code" type="text" placeholder="Enter product code...">
</div>
@error('code')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
<div class="form-group">
<button type="submit" class="btn btn-primary float-lg-right">Search for product</button>
</div>
{{ csrf_field() }}
</form>
每当我提交表单时,我都会收到“尝试获取非对象的属性'名称'”,我做错了什么?我的控制器中确实包含应用程序/产品。
编辑: 添加“dd($Product);” 我的控制器为我提供了“null”作为答案。
解决方案
回答你的问题。
$product = Product::where('product-code', $request->get('code'))->first(); // remove '='
if($product) // if the product with given code is not found then the $product would be null
{
return view('edit_product', compact('product'));
}
return redirect()->route('edit_product')->with('fail', 'Failed to find the product.');
您的代码中仍然存在许多编码标准问题。我建议通过Laravel 最佳实践。
推荐阅读
- php - Woocommerce 如何显示相关类别
- python - 如何在python中获取键值对的值?
- .net - 在 .NET 5 中使用带有 NEST 的谓词表达式
- java - Spring Boot 无法反序列化 json 数组
- java - 使用hibernate从Oracle调用存储过程
- javascript - 如何编写将内容脚本应用于单页应用程序的 chrome 扩展程序?
- typescript - 如何在Javascript中访问对象中的嵌套字段?
- erlang - erlang:system_time/1 可以返回负数吗?
- angular - 路由更改时的角度@input值
- arrays - 将数组中的两个字节值组合并放入一个并打印它