[英]Property [ptitle] does not exist on this collection instance in Laravel 5
我有一张包含所有已创建产品的表,当我单击产品的“编辑”按钮之一时,出现以下错误消息: Property [ptitle] does not exist on this collection instance (View: C:\\xampp\\htdocs\\webshop\\resources\\views\\admin\\termekszerk.blade.php)
有人可以帮我解决这个问题吗? 楷模:
class Category extends Model
{
protected $fillable = ['cid', 'cname'];
protected $primaryKey = 'cid';
public function item()
{
return $this->hasMany('App\Item', 'cid');
}
}
class Item extends Model
{
protected $fillable = ['pid', 'pcat', 'pdescription', 'ptitle', 'pdb', 'par', 'pcikkszam' ];
protected $primaryKey = 'pid';
public function category()
{
return $this->belongsTo('App\Category', 'pcat');
}
}
控制器:
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!');
}
termekszerk刀片(这是我单击“编辑”按钮之前未显示的页面):
<div class="container">
<div class="well well bs-component">
<form class="form-horizontal" method="post">
@foreach ($errors->all() as $error)
<p class="alert alert-danger">{{ $error }}</p>
@endforeach
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
<fieldset>
<legend>Termék szerkesztése</legend>
<div class="form-group">
<label for="title" class="col-lg-2 control-label">Termék neve</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="ptitle" name="ptitle" value="{!! $product->ptitle !!}">
</div>
</div>
<div class="form-group">
<label for="title" class="col-lg-2 control-label">Cikkszám</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="pcikkszam" name="pcikkszam" value="{!! $product->pcikkszam !!}">
</div>
</div>
<div class="form-group">
<label for="title" class="col-lg-2 control-label">Termék ára</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="par" name="par" value="{!! $product->par !!}">
</div>
</div>
<div class="form-group">
<label for="title" class="col-lg-2 control-label">Mennyiség</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="pdb" name="pdb" value="{!! $product->pdb !!}">
</div>
</div>
<div class="form-group">
<label for="content" class="col-lg-2 control-label">Termék leírás</label>
<div class="col-lg-10">
<textarea class="form-control" rows="18" id="pdescription" name="pdescription">{!! $product->pdescription !!}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<a href="/admin/create_products"><button class="btn btn-default pbtn">Mégsem</button></a>
<form method="post" action="{!! action('CategoriesController@pupdate', $product->pid) !!}">
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
<button type="submit" class="btn btn-primary pbtn">Változtatás</button>
</form>
<form method="post" action="{!! action('CategoriesController@pdestroy', $product->pid) !!}">
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
<button type="submit" class="btn btn-danger pull-right pbtn">Törlés</button>
</form>
</div>
</div>
</fieldset>
</form>
</div>
</div>
我发现您的代码中不应包含某些内容,也许更正它们会解决您的问题
首先在您的控制器中:
public function pedit($pid)
{
$product = Item::find($pid)->first();
return view('admin.termekszerk', compact('product'));
}
您使用find方法,但我不确定$ pid在表结构中是否为PK
找到后使用first()方法; 它不是必需的,因为find方法将获得一行
例如,如果您的桌子是这样的
表:
-id(自动increamnet)
-pid
当您使用find($ pid)在id列中进行搜索时,仅发现一行
因此您可以像这样更改代码:
public function pedit($pid)
{
$product = Item::where('pid',$pid)->first();
return view('admin.termekszerk', compact('product'));
}
但是,如果pid
是您表中的PK
,则应在找到后删除first()
方法
secound:
我不知道你为什么使用{!! !!}
{!! !!}
您应该正常使用{{ }}
而不是刀片中的刀片
但是,如果您将数据存储为HTML代码,则可以使用{!! !!}
{!! !!}
获得HTML代码
默认情况下,Blade {{}}语句是通过PHP的htmlspecialchars函数自动发送的,以防止XSS攻击。 如果您不想转义数据,则可以使用以下语法:
如果您以后添加了“ ptitle”,并且数据库中以前的产品没有ptitle,则可能就是这导致错误的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.