Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.02.2016 09:21:34

Дима

Привязка записи к id пользователя через форму.

Добрый день!
Подскажите новичку, каким образом должна быть составлена форма или контроллер, чтобы при добавлении новой записи в базу в соответствующее поле таблицы заносился id текущего пользователя?

#2 24.02.2016 09:48:58

Re: Привязка записи к id пользователя через форму.

Все решил вот так:   
public function store(Model $varModel)
{
  $varModel->column_id = Auth::user()->id;
  $varModel->save()
}

Изменено Deviator2001 (24.02.2016 09:53:29)

Не в сети

#3 24.02.2016 11:14:50

duster
Откуда: Мельбурн
Сообщений: 148

Re: Привязка записи к id пользователя через форму.

Я надеюсь Вы не в контроллере такой метод создали?

Метод store() в Laravel — это метод в контроллерах для POST запросов в парадигме RESTful (сохранение нового ресурса)

column_id — очень неподходящее название колонки для ID юзера. Лучше ’user_id’

Не в сети

#4 24.02.2016 11:41:14

Re: Привязка записи к id пользователя через форму.

Да, это создано именно в методе post контроллера.
Данные передаются через post из формы.
Полностью у меня это выглядит так

public function store(Post $postModel)

{
        $postModel->title = Input::get('title');
        $postModel->slug = Input::get('slug');
        $postModel->excerpt = Auth::user()->id; //в это поле записывается id
        $postModel->content = Input::get('content');
        $postModel->save();
        return redirect()->route('post.index');
}

Если на ваш взгляд это не корректно, то буду благодарен за верное решение.

Не в сети

#5 24.02.2016 12:13:23

duster
Откуда: Мельбурн
Сообщений: 148

Re: Привязка записи к id пользователя через форму.

Максимально близкий к оригиналу:

PHP
public function store()
{
        
Post::create([
             
'title' => Input::get('title'),
             
'slug' => Input::get('slug'),
             
'user_id' => Auth::user()->id,
             
'content' => Input::get('content')
        ]);

        return 
redirect()->route('post.index');
}

1) Особого смысла в параметрах указывать Post $postModel нет, оно просто делает new Post.
2) В реальности лучше сделать свой класс запроса (php artisan make:request), где будут проверятся все поля типа title, slug и тд. Тогда можно будет вообще создавать одной строкой: Post::create($request->all());

Не в сети

Подвал раздела