Intereting Posts

laravel вставка в несколько таблиц

У меня есть 2 стола

#something - id, name, url #something_users - id, id_something, email, password 

Мои модели

 class Something extends Eloquent { protected $table = 'something'; protected $fillable = ['name', 'email', 'password']; public $errors; public function User() { return $this->belongsTo('User', 'id', 'id_something'); } } class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; protected $table = 'something_users'; protected $hidden = array('password', 'remember_token'); public function Something() { return $this->belongsTo('Something'); } } 

контроллер

 $input = Input::all(); // also some validation $this->db->fill($input); $this->db->password = Hash::make(Input::get('password')); $this->db->push(); $this->db->save(); 

SQL

 insert into `something` (`name`, `email`, `password`) values... 

Мне нужно вставить имя в первую таблицу (что-то) и адрес электронной почты, пароль на второй (something_users)

Как это сделать? Я знаю об этом.

Solutions Collecting From Web of "laravel вставка в несколько таблиц"

Ваши отношения немного запутаны, вы, вероятно, захотите их изменить. Обратите внимание на hasMany() и на belongsTo() . Если у кого- something может быть только один user , вы можете изменить функцию на hasOne() из hasMany() и имя функции для user() только потому, что это имеет больше смысла.

 class Something extends Eloquent { protected $table = 'something'; public function users() { return $this->hasMany('User', 'id_something'); } } class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; protected $table = 'something_users'; protected $hidden = array('password', 'remember_token'); public function something() { return $this->belongsTo('Something', 'id_something'); } } 

И затем, чтобы сохранить что- something и user и связать их, это довольно легко.

 $something = new Something; $something->name = Input::get('name'); $something->url = Input::get('url'); $something->save(); $user = new User; $user->email = Input::get('email'); $user->password = Hash::make(Input::get('password')); $something->users()->save($user); 

Я не вижу вашего конструктора, поэтому я не знаю, к какой модели относится этот $this->db , но вы можете захотеть заменить что- somethings или users зависимости от того, что у вас есть. Чтобы продолжить инъекцию зависимости, я бы предложил называть ваши зависимости тем, чем они на самом деле являются.

 class SomeController extends BaseController { public function __construct(User $user, Something $something) { $this->user = $user; $this->something = $something; } public function someFunction() { $this->something->name = Input::get('name'); $this->something->url = Input::get('url'); $this->something->save(); $this->user->email = Input::get('email'); $this->user->password = Hash::make(Input::get('password')); $this->something->users()->save($this->user); } } 

У меня аналогичная проблема. У меня есть 2 таблицы и сохранение данных, подобных этим

таблица пользователя :

  id, name, username, password, role 

таблица участников :

  member_id, member_ic, member_contact, addressType_id, address, postcode, state, user_id 

Я могу добавить эти данные отдельно в базу данных, но не знаю, как добавить их вместе, как пример, показывающий …..

Кроме того, данные сохраняются только тогда, когда роль = 3 Я использую примерную структуру из https://github.com/bestmomo/laravel5-example

любой может направить меня на это спасибо.