无法添加或更新子行'user_id'(Cannot add or update a child row 'user_id')
当我提交表单时,我可以在错误中看到我的所有值都被传递,除了'user_id':
('insert into `products` (`title`, `body`, `address`, `condition`, `quantity`, `price`, `bid_price`, `img_1`, `updated_at`, `created_at`)但是缺少'user_id' ,为什么? 这是我的Product.php
protected $fillable = ['slug', 'title', 'body', 'user_id', 'price', 'bid_price', 'address', 'condition', 'quantity', 'img_1', 'img_2', 'img_3', 'img_4', 'views'];控制器中的功能:
public function storeAuction(AuctionSubmitRequest $request) { $product = Product::create($request->all()); Auth::user()->product()->save($product); $request->file('img_1')->move(public_path('images'), $request->file('img_1')->getClientOriginalName()); $data = $request->except(['img_1']); $data['img_1'] = public_path('images') . '/' . $request->file('img_1')->getClientOriginalName(); $product->create($data); return redirect('/'); }我的表格:
<form id="tryitForm" class="form-horizontal" method="POST" action="/paskelbti-nauja-aukciona" enctype="multipart/form-data"> {!! csrf_field() !!} <div class="form-group"> <label class="col-md-3 control-label">Prekės pavadinimas</label> <div class="col-md-4"> <input type="text" class="form-control" name="title" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės aprašymas</label> <div class="col-md-4"> <textarea name="body" class="form-control"></textarea> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Adresas</label> <div class="col-md-6"> <input type="text" class="form-control" name="address" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Pristatymas</label> <div class="col-md-6"> <div class="radio"> <label><input type="radio" name="dispatch" value="kurjeris" /> Kurjeriu</label> </div> <div class="radio"> <label><input type="radio" name="dispatch" value="pastas" /> Paštu</label> </div> <div class="radio"> <label><input type="radio" name="dispatch" value="kita" /> Kita (parašysiu "prekės aprašyme")</label> </div> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės būklė</label> <div class="col-md-6"> <div class="radio"> <label><input type="radio" name="condition" /> Nauja</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Labai gera</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Gera</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Panaudota</label> </div> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Barkodas (jei turite)</label> <div class="col-md-4"> <input class="form-control" name="barcode" type="number" min="0" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekių kiekis</label> <div class="col-md-2"> <input class="form-control" name="quantity" type="number" min="1" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės nuotraukos</label> <div class="col-md-6"> <input type="file" class="form-control" name="img_1" /><br> <input type="file" class="form-control" name="img_2" /><br> <input type="file" class="form-control" name="img_3" /><br> <input type="file" class="form-control" name="img_4" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės kaina</label> <div class="col-md-2"> <input class="form-control" name="price" type="number" step="0.01" min="0.01" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Minimali siūlymo suma</label> <div class="col-md-2"> <input class="form-control" name="bid_price" type="number" step="0.01" min="0.01" /> </div> </div> <div class="form-group"> <div class="col-md-offset-3 col-md-8"> <button type="submit" class="btn btn-primary">Pradėti aukcioną</button> </div> </div> </form>When I submit my form I can see in the error that all my values are passed except 'user_id':
('insert into `products` (`title`, `body`, `address`, `condition`, `quantity`, `price`, `bid_price`, `img_1`, `updated_at`, `created_at`)But there's missing 'user_id', why ? This is my Product.php
protected $fillable = ['slug', 'title', 'body', 'user_id', 'price', 'bid_price', 'address', 'condition', 'quantity', 'img_1', 'img_2', 'img_3', 'img_4', 'views'];The function in controller:
public function storeAuction(AuctionSubmitRequest $request) { $product = Product::create($request->all()); Auth::user()->product()->save($product); $request->file('img_1')->move(public_path('images'), $request->file('img_1')->getClientOriginalName()); $data = $request->except(['img_1']); $data['img_1'] = public_path('images') . '/' . $request->file('img_1')->getClientOriginalName(); $product->create($data); return redirect('/'); }My form:
<form id="tryitForm" class="form-horizontal" method="POST" action="/paskelbti-nauja-aukciona" enctype="multipart/form-data"> {!! csrf_field() !!} <div class="form-group"> <label class="col-md-3 control-label">Prekės pavadinimas</label> <div class="col-md-4"> <input type="text" class="form-control" name="title" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės aprašymas</label> <div class="col-md-4"> <textarea name="body" class="form-control"></textarea> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Adresas</label> <div class="col-md-6"> <input type="text" class="form-control" name="address" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Pristatymas</label> <div class="col-md-6"> <div class="radio"> <label><input type="radio" name="dispatch" value="kurjeris" /> Kurjeriu</label> </div> <div class="radio"> <label><input type="radio" name="dispatch" value="pastas" /> Paštu</label> </div> <div class="radio"> <label><input type="radio" name="dispatch" value="kita" /> Kita (parašysiu "prekės aprašyme")</label> </div> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės būklė</label> <div class="col-md-6"> <div class="radio"> <label><input type="radio" name="condition" /> Nauja</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Labai gera</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Gera</label> </div> <div class="radio"> <label><input type="radio" name="condition" /> Panaudota</label> </div> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Barkodas (jei turite)</label> <div class="col-md-4"> <input class="form-control" name="barcode" type="number" min="0" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekių kiekis</label> <div class="col-md-2"> <input class="form-control" name="quantity" type="number" min="1" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės nuotraukos</label> <div class="col-md-6"> <input type="file" class="form-control" name="img_1" /><br> <input type="file" class="form-control" name="img_2" /><br> <input type="file" class="form-control" name="img_3" /><br> <input type="file" class="form-control" name="img_4" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Prekės kaina</label> <div class="col-md-2"> <input class="form-control" name="price" type="number" step="0.01" min="0.01" /> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Minimali siūlymo suma</label> <div class="col-md-2"> <input class="form-control" name="bid_price" type="number" step="0.01" min="0.01" /> </div> </div> <div class="form-group"> <div class="col-md-offset-3 col-md-8"> <button type="submit" class="btn btn-primary">Pradėti aukcioną</button> </div> </div> </form>最满意答案
您可以尝试以下内容。
public function storeAuction(AuctionSubmitRequest $request) { $request->file('img_1')->move(public_path('images'), $request->file('img_1')->getClientOriginalName()); // first create the related model, do not save or create // because you will get a 'Cannot add or update a child row' $product = new Product(); $product->property1 = $request->get('property1'); $product->property2 = $request->get('property2'); // ... $product->img_1 = public_path('images') . '/' . $request->file('img_1')->getClientOriginalName(); // here you save a product associated to the user. Auth::user()->product()->save($product); return redirect('/'); }You may try something like the following.
public function storeAuction(AuctionSubmitRequest $request) { $request->file('img_1')->move(public_path('images'), $request->file('img_1')->getClientOriginalName()); // first create the related model, do not save or create // because you will get a 'Cannot add or update a child row' $product = new Product(); $product->property1 = $request->get('property1'); $product->property2 = $request->get('property2'); // ... $product->img_1 = public_path('images') . '/' . $request->file('img_1')->getClientOriginalName(); // here you save a product associated to the user. Auth::user()->product()->save($product); return redirect('/'); }更多推荐
发布评论