добавленное значение массива запроса исчезает в Laravel Контроллере - PullRequest
0 голосов
/ 30 мая 2020

идентификатор пользователя существует до создания. поэтому это вызывает ошибку в первом. Я сделал наоборот. второй ниже работает правильно. Я хотел бы знать, почему первый неправильный, и его нет.

//Error
    public function store(ContactRequest $request)
    {
        $request->user_id = $request->user()->id;
        Log::debug($request->user()->id);
        Log::debug($request);
        Contact::create($request->all());
    }

// ОК

    public function store(ContactRequest $request,Contact $contact)
    {

        $request->user_id = $request->user()->id;

        $contact->title = $request->title;
        $contact->body = $request->body;
        $contact->user_id = $request->user()->id;
        $contact->save();
    }
the log of the first one is here.
What happened to the user_id!?
[2020-05-30 15:59:10] local.DEBUG: 59  
[2020-05-30 15:59:10] local.DEBUG: array (
  '_token' => 'gGWuxW6C2JRSCYDuCAC9HauynGclKQEQB7qUh6Rw',
  'title' => 'TITLE',
  'body' => 'MESSAGE',
  'action' => 'SEND',
)  

Контакт - это класс модели. ContactRequest здесь.

class ContactRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'title' => 'required|max:100',
            'body' => 'required|max:1000'
        ];
    }
    public function attributes() {
        return [
            'title' => 'title',
            'body' => 'CONTENTS'
        ];
    }
}

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Что делать, если вы сделаете это:

Auth::user() - >contact($request->all()) - >save() ;

Или также в качестве эксперимента:

$contact = new Contact($request->all()) ;
$contact->user_id = Auth::user() - >id;
$contact->save() ;

На самом деле второй фрагмент наверняка сработает. Первый, который я не тестировал, выглядит неплохо. :)

1 голос
/ 30 мая 2020

Вам нужно будет использовать $request->merge(['user_id'=>$request->user()->id]). Еще один совет: вы можете просто использовать Auth::user()->id, который также возвращает идентификатор текущего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...