2016-08-25 4 views
0

Я использую Laravel 5, и я создал контроллер ресурсов, установил маршрутизацию и установил модель моей базы данных.Laravel 5 - Вставка всех данных POST в базу данных?

Мой вопрос: когда я нахожу POST, мой метод магазина вызывается на контроллере, но как я могу взять данные запроса и вставить новую запись в db без явного задания каждого поля?

Вот мой код:

public function store(Request $request) 
{ 
    $data = $request->all(); // this grabs all my request data - great! 
    $user = new User; 
    $user-> ??? // insert ALL posted data 
    $user->save(); 
} 

Я понимаю, что я могу сделать ...

$user->name = $request->name; 

... для каждого поля. Но может кто-нибудь сказать мне, как вставить все?

Я понимаю, что, возможно, я могу сделать foreach, но мне интересно, есть ли что-то лучше.

ответ

2

Существует метод fill в каждой модели https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_fill:

$user->fill($request->all()); 

В конце концов, вы можете использовать create:

\User::create($request->all()); 

Это выше, называется масса asignment и есть раздел об этом в Eloquents документации https://laravel.com/docs/5.1/eloquent Вам необходимо определить, какие ключи могут быть установлены:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    // The attributes that are mass assignable 
    protected $fillable = ['name', 'login', 'birthdate']; 
} 
+0

То, что мне нужно! Благодаря @ofca – Andrew

Смежные вопросы