Ant*_*ony 5 php laravel eloquent laravel-4
在Laravel 4中,我有一个"Meta"模型,可以通过"object_id"和"object_type"属性与任何对象相关联.例如:
id: 1
object_id: 100
object_type: User
key: favorite_ice_cream
value: Vanilla
Run Code Online (Sandbox Code Playgroud)
我通过在http://laravel.com/docs/eloquent#polymorphic-relations中描述的morphTo()和morphMany()正常工作,所以我可以通过以下方式拉取用户及其所有元素:
$ user = User :: with('meta') - > find(100);
我现在要弄清楚的是:有一种简单的方法可以将meta保存到我的用户身上吗?如:
$user = User::find(100);
$user->meta()->save(['key' => 'hair_color', 'value' = 'black']);
Run Code Online (Sandbox Code Playgroud)
无论在元上正确设置object_id和object_type需要保存什么.由于我已经定义了模型中的关系,我不确定是否会自动完成.我随机尝试了几种不同的方法,但每次都崩溃了.
Jar*_*zyk 12
save上该方法MorphMany需要相关模型作为PARAM,不是阵列.
它将始终正确设置外键和多态关系的模型类型.显然,您需要先保存父模型.
// Meta morphTo(User)
$user = User::find($id);
$meta = new Meta([...]);
$user->meta()->save($meta);
// or multiple
$user->meta()->saveMany([new Meta([...], new Meta[...]);
Run Code Online (Sandbox Code Playgroud)
attach而另一方面是,适用于不同的方法belongsToMany和多态毫米的关系,它并没有这样做,但这些关系也可以使用save.
// User belongsToMany(Category)
$user = User::find($id);
$user->categories()->save(new Category([...]));
// but attach is different
$user->categories()->attach($catId); // either id
$category = Category::find($catId);
$user->categories()->attach($category); // or a Model
// this will not work
$user->categories()->attach(new Category([...]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7472 次 |
| 最近记录: |