存储具有 user_id 和 article_id - laravel 的 offers()
Store offers() which have user_id and article_id - laravel
我创建了一个包含用户、文章和优惠的简单应用程序。现在用户可以创建文章并提供该文章。 SO User hasMany Article and hasMany Offers, article belogsTo User and hasMany Offers and offers belongsTo User and Article...所以我写:
在用户模型:
public function articles(){
return $this->hasMany('App\Article');
}
public function offer(){
return $this->hasMany('App\Offer');
}
文章型号:
public function user(){
return $this->belongsTo('App\User');
}
public function offer(){
return $this->hasMany('App\Offer');
}
我在 Offer 模型中写道:
public function user(){
return $this->belongsTo('App\User');
}
public function article(){
return $this->belongsTo('App\Article');
}
但现在我想知道如何在我的 OffersController 中创建 store() 函数 - 我尝试:
public function store(Requests\OfferRequest $request)
{
$offer = new Offer($request->all());
Auth::user()->articles()->offer()->save($offer);
Alert::success('Offer is succesfully added!','Good job!')->persistent("Close");
return redirect('offers');
}
但我得到错误:
BadMethodCallException in Builder.php line 2071: Call to undefined
method Illuminate\Database\Query\Builder::article()
我的表单代码也是:
{!! Form::open(['url'=>'offers']) !!}
<div class="form-group">
{!! Form::label('price','Price') !!}
{!! Form::text('price', null, ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Add Offer', ['class'=>'btn btn-primary form-control']) !!}
</div>
{!! Form::close() !!}
我的路线是:
Route::resource('offers', 'OffersController');
如何添加报价并且该报价需要有 user_id 的 Auth::user 和 article_id ...
当我使用:Auth::user()->offer()->save($offer);
然后商店报价很好,但只有 user_id 我不知道如何才能 article_id 商店报价。
我也知道我可以将 {{$article->id}}
放在 blade 模板中并从表单中获取它们,但这是安全高风险...
还有一件事 - 只有用户(管理员)可以创建文章,但所有用户都可以为文章提供报价,所以因为我需要 user_id 在报价 table...
请帮忙!
我认为问题在于您没有选择要约附加到的文章。
尝试选择文章或直接将其保存在用户中。
在您的控制器中,您可以执行类似的操作以将报价保存到特定文章...
Auth::user()->articles()->find($articleID)->offer()->save($offer);
或者像这样保存给用户...
Auth::user()->offer()->save($offer);
不确定您是如何在文章和用户之间共享优惠的,但如果您这样做的话,那很好。
希望对您有所帮助...
快速的小建议:将报价方法复数化,因为它是一个 hasMany 关系。
我创建了一个包含用户、文章和优惠的简单应用程序。现在用户可以创建文章并提供该文章。 SO User hasMany Article and hasMany Offers, article belogsTo User and hasMany Offers and offers belongsTo User and Article...所以我写:
在用户模型:
public function articles(){
return $this->hasMany('App\Article');
}
public function offer(){
return $this->hasMany('App\Offer');
}
文章型号:
public function user(){
return $this->belongsTo('App\User');
}
public function offer(){
return $this->hasMany('App\Offer');
}
我在 Offer 模型中写道:
public function user(){
return $this->belongsTo('App\User');
}
public function article(){
return $this->belongsTo('App\Article');
}
但现在我想知道如何在我的 OffersController 中创建 store() 函数 - 我尝试:
public function store(Requests\OfferRequest $request)
{
$offer = new Offer($request->all());
Auth::user()->articles()->offer()->save($offer);
Alert::success('Offer is succesfully added!','Good job!')->persistent("Close");
return redirect('offers');
}
但我得到错误:
BadMethodCallException in Builder.php line 2071: Call to undefined method Illuminate\Database\Query\Builder::article()
我的表单代码也是:
{!! Form::open(['url'=>'offers']) !!}
<div class="form-group">
{!! Form::label('price','Price') !!}
{!! Form::text('price', null, ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Add Offer', ['class'=>'btn btn-primary form-control']) !!}
</div>
{!! Form::close() !!}
我的路线是:
Route::resource('offers', 'OffersController');
如何添加报价并且该报价需要有 user_id 的 Auth::user 和 article_id ...
当我使用:Auth::user()->offer()->save($offer);
然后商店报价很好,但只有 user_id 我不知道如何才能 article_id 商店报价。
我也知道我可以将 {{$article->id}}
放在 blade 模板中并从表单中获取它们,但这是安全高风险...
还有一件事 - 只有用户(管理员)可以创建文章,但所有用户都可以为文章提供报价,所以因为我需要 user_id 在报价 table...
请帮忙!
我认为问题在于您没有选择要约附加到的文章。 尝试选择文章或直接将其保存在用户中。
在您的控制器中,您可以执行类似的操作以将报价保存到特定文章...
Auth::user()->articles()->find($articleID)->offer()->save($offer);
或者像这样保存给用户...
Auth::user()->offer()->save($offer);
不确定您是如何在文章和用户之间共享优惠的,但如果您这样做的话,那很好。
希望对您有所帮助...
快速的小建议:将报价方法复数化,因为它是一个 hasMany 关系。