Php Laravel 5中的此集合实例上不存在属性[ptitle]

Php Laravel 5中的此集合实例上不存在属性[ptitle],php,laravel,Php,Laravel,我有一个满是已创建产品的表,当我单击其中一个产品的“编辑”按钮时,我会收到以下错误消息:Property[ptitle]在此集合实例上不存在(视图:C:\xampp\htdocs\webshop\resources\views\admin\termekszerk.blade.php) 有谁能帮我解决这个问题吗? 型号: 控制器: public function pedit($pid) { $product = Item::find($pid)->first(); retur

我有一个满是已创建产品的表,当我单击其中一个产品的“编辑”按钮时,我会收到以下错误消息:
Property[ptitle]在此集合实例上不存在(视图:C:\xampp\htdocs\webshop\resources\views\admin\termekszerk.blade.php)
有谁能帮我解决这个问题吗? 型号:

控制器:

public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}


public function pupdate(ProductFormRequest $request, $pid)
{
    $product = Item::find($pid)->first();
    $product->ptitle = $request->get('ptitle');
    $product->pcat = $request->get('pcat');
    $product->pcikkszam = $request->get('pcikkszam');
    $product->par = $request->get('par');
    $product->pdb = $request->get('pdb');
    $product->pdescription = $request->get('pdescription');

    $product->save();
    return redirect(action('CategoriesController@index', $product->pid))->with('status', 'A termék frissítve!');

}
public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}
termekszerk刀片(这是我单击编辑按钮之前未显示的页面):


@foreach($errors->all()作为$error)

{{$error}

@endforeach szerkesztése术语 内韦术语 锡克萨姆 任期 梅尼埃 勒伊斯术语 {!!$product->pddescription!!} 瓦尔托兹塔斯 托雷斯
我在你的代码中看到了一些不应该出现的错误,也许纠正它们可以解决你的问题

首先在控制器中:

public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}


public function pupdate(ProductFormRequest $request, $pid)
{
    $product = Item::find($pid)->first();
    $product->ptitle = $request->get('ptitle');
    $product->pcat = $request->get('pcat');
    $product->pcikkszam = $request->get('pcikkszam');
    $product->par = $request->get('par');
    $product->pdb = $request->get('pdb');
    $product->pdescription = $request->get('pdescription');

    $product->save();
    return redirect(action('CategoriesController@index', $product->pid))->with('status', 'A termék frissítve!');

}
public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}
您使用find方法,我不确定$pid在您的表结构中是否为
PK

在find之后使用first()方法;不需要它,因为find方法将获得一行

例如,如果您的桌子是这样的

表:

-id(自动递增网络)

-pid

当您使用find($pid)时,在id列中搜索并只查找一行

因此,您可以按如下方式更改代码:

public function pedit($pid)
{
    $product = Item::where('pid',$pid)->first();
    return view('admin.termekszerk', compact('product'));
}
但是如果
pid
在您的表中是
PK
,那么您应该在find之后删除
first()

第二声:

我不知道你为什么在刀片中使用
{!!!!}

您应该使用
{{}
,而不是在刀片服务器中使用

但是如果您将数据存储为HTML代码,则可以使用
{!!!!}
获取HTML代码

默认情况下,Blade{{}语句会自动通过 PHP的htmlspecialchars函数用于防止XSS攻击。如果你不 要转义数据,可以使用以下语法:


如果您后来添加了“ptitle”,并且数据库中以前的产品没有ptitle,那么这可能就是导致错误的原因

{!!$product->ptitle!!}
替换为
{{$product->ptitle}}
和其他字段,并告诉我结果,我不知道您为什么要使用它{!!value中的每个where我在任何地方都更改了,但仍然收到相同的错误消息test My answer controller suggestion to delete
first()
after
find()
我的意思是
$product=Item::find($pid)
和测试itI我尝试了这个,但还是出现了相同的错误。pid是自动递增的,它是主键。我没有其他id。也许我应该在我的表中添加一个新的cloumn。我添加了一个“pslug”列,它创建了一个随机的产品id号,但仍然写入了相同的错误。我不明白为什么要写入该属性[ptitle]不存在…所有产品都有ptitle。@Dodo我认为它与ptitle无关,因为如果在blade中删除ptitle输入,您会看到secound数据返回错误,所以您的主要问题在pedit控制器中,您是否使用where条件进行了测试,而不是像这样找到:
$product=Item::where('pid',$pid)->first()
?在返回视图之前在控制器中检查
return$product->ptitle;
,或在控制器中检查
dd$product)
以了解$product类型和数据最后,我解决了它。我在AppServiceProvider.php中添加了这一点:
public function boot(){Schema::defaultStringLength(191);view::composer('*',function($view){$view->with('categories',categories::latest()->get());$view->with('products',Item::latest()->get();});}
所有产品的数据库中都有ptitle,这就是为什么我不知道问题出在哪里。