Bea*_*ary 42 one-to-many laravel eloquent laravel-4
我有用户,用户属于经销商.
在用户注册后,我正在尝试保存新用户和新经销商.
用户数据库有一dealership_id列,我想用新创建的经销商的ID填充该列.
这是我在UserControllerstore方法中的当前代码.
public function store()
{
$user = new User();
$user->email = Input::get('email');
$user->password = Input::get('password');
$dealership = new Dealership();
$dealership->name = Input::get('dealership_name');
$user->push();
return "User Saved";
}
Run Code Online (Sandbox Code Playgroud)
尝试使用$user->push();用户数据会更新,但不会创建或更新经销商.
Qua*_*unk 58
Eloquent push()拯救了模型及其关系,但首先你必须告诉你想要参与关系的内容.
由于您的用户模型/表包含经销商的ID,我假设用户只能属于一个经销商,因此关系应如下所示:
用户模型:
public function dealership()
{
return $this->belongsTo('Dealership');
}
Run Code Online (Sandbox Code Playgroud)
经销商型号:
public function users()
{
return $this->hasMany('User');
}
Run Code Online (Sandbox Code Playgroud)
要从经销商角度保存用户,请执行以下操作:
$dealership->users()->save($user);
Run Code Online (Sandbox Code Playgroud)
要将经销商与用户相关联,请执行以下操作:
$user->dealership()->associate($dealership);
$user->save();
Run Code Online (Sandbox Code Playgroud)
小智 7
请检查此答案 以查看push()和save()的区别
您需要根据文档正确定义模型关系 如果这样做正确,它应该可以工作.这就是push()的作用:
/**
* Save the model and all of its relationships.
*
* @return bool
*/
public function push()
{
if ( ! $this->save()) return false;
// To sync all of the relationships to the database, we will simply spin through
// the relationships and save each model via this "push" method, which allows
// us to recurse into all of these nested relations for the model instance.
foreach ($this->relations as $models)
{
foreach (Collection::make($models) as $model)
{
if ( ! $model->push()) return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您有一个(经销商)属于许多(用户)
在您的用户模型中:
class Users extends Eloquent {
public function dealership()
{
return $this->belongsTo('Dealership');
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,Eloquent将在users表中查找dealership_id列.在您的经销商模型中:
class Dealership extends Eloquent {
public function users()
{
return $this->hasMany('User');
}
}
Run Code Online (Sandbox Code Playgroud)
在您的商店功能:
public function store()
{
$user = new User();
$user->email = Input::get('email');
$user->password = Input::get('password');
$user->dealership = new Dealership();
$user->dealership->name = Input::get('dealership_name');
$user->push();
return "User Saved";
}
Run Code Online (Sandbox Code Playgroud)
在这里学习更多关于雄辩关系的知识
| 归档时间: |
|
| 查看次数: |
50685 次 |
| 最近记录: |