У меня есть 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)
Как это сделать? Я знаю об этом.
Ваши отношения немного запутаны, вы, вероятно, захотите их изменить. Обратите внимание на 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
любой может направить меня на это спасибо.