我有2张桌子
#something - id, name, url
#something_users - id, id_something, email, password
Run Code Online (Sandbox Code Playgroud)
我的模特
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');
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
$input = Input::all();
// also some validation
$this->db->fill($input);
$this->db->password = Hash::make(Input::get('password'));
$this->db->push();
$this->db->save();
Run Code Online (Sandbox Code Playgroud)
SQL
insert into `something` (`name`, `email`, `password`) values...
Run Code Online (Sandbox Code Playgroud)
我需要将名称插入第一个表(某物)和电子邮件,密码插入第二个(something_users)
怎么做?我对此有所了解.
use*_*496 10
你的关系有点搞砸了,你可能想要改变它们.注意hasMany()VS的belongsTo().如果a something只能有一个user,你可能希望将函数更改为hasOne()from 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');
}
}
Run Code Online (Sandbox Code Playgroud)
然后保存a something和a 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);
Run Code Online (Sandbox Code Playgroud)
我没有看到你的构造函数所以我不知道哪个模型$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);
}
}
Run Code Online (Sandbox Code Playgroud)