2015-12-19 1 views
1

Я создаю простое приложение с пользователями, статьями и предложениями. Теперь Пользователь может создавать статьи и предложения для этой статьи. SO hasMany Пользователь Статья и hasMany предложения, статьи belogsTo пользователя и hasMany Предложения и предложения belongsTo пользователя и статью ... так что я пишу:Магазин предлагает(), которые имеют user_id и article_id - laravel

в модели пользователя:

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'); 
    } 

и в модели Предложение я пишу:

public function user(){ 
     return $this->belongsTo('App\User'); 
    } 

    public function article(){ 
     return $this->belongsTo('App\Article'); 
    } 

Но теперь у меня есть probem том, как создать магазин() функцию в моей OffersController - Стараюсь:

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() enter image description here

также моя форма код:

{!! 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'); 

Как добавить Предложение и tha t предлагают иметь user_id от Auth :: user и article_id ...

Когда я использую: Auth::user()->offer()->save($offer);, тогда магазин предлагает прекрасное, но только i_ user_id, и я не знаю, как я могу получить article_id для хранения для предложения.

Кроме того, я знаю, что я могу поставить {{$article->id}} на шаблон лезвия и извлечения их из формы, но это безопасность высокий риск ...

Еще одна вещь - только пользователей (администраторов) может создать статью, но все пользователи могут поставить предлагает статью, так что мне нужно user_id в таблице предложений ...

Пожалуйста, помогите!

ответ

2

Я думаю, проблема заключается в том, что вы не выбираете статью, чтобы приложить Предложение. Попробуйте либо выбрать статью, либо сохранить ее непосредственно на пользователе.

в контроллере, вы можете сделать что-то подобное, чтобы сохранить предложение к конкретной статье ...

Auth::user()->articles()->find($articleID)->offer()->save($offer); 

или сохранить его в пользователя, как это ...

Auth::user()->offer()->save($offer); 

не знаете, как вы делитесь предложениями между статьями и пользователями, но здорово, если хотите.

Надежда, что помогает ...

быстро незначительное предложение: множественном числе методы предлагают, потому что это отношения hasMany.

+0

Правильно, я собирался сказать, что – delatbabel

+0

Можете ли вы написать пример здесь? Как это сделать? – MonkeyBusiness

+0

Обновите свой ответ и напишите код, и я проверю его как правильный ответ ... – MonkeyBusiness