Dus*_*vak 9 php eloquent laravel-4
我有模型餐可以包含模型成分和成分有很多属性...
我有DB的所有成分,还有一些饭菜....
但我想创造一顿新餐,但不将其存放在DB中.
像这样的东西:
$meal = new Meal;
$meal->ingredients()->attach(5);
Run Code Online (Sandbox Code Playgroud)
其中5是DB中成分的id.
然而,这将失败,因为$ meal尚未存储在DB中,而attach()函数试图在meal_ingredient表中创建新记录....
那么有什么方法可以创建"离线"模型并将其与"在线"数据连接起来?
谢谢
那么有什么方法可以创建"离线"模型并将其与"在线"数据连接起来?
是的,您可以使用一种没有数据库的Laravel 模型(在您说出时离线).请参考jenssegers/laravel-model.基本上它是一个实现类ArrayAccess,ArrayableInterface,JsonableInterface一些州和行为需要.
是的,应该有一种方法可以将"在线" Illuminate\Database\Eloquent\Model与您的"离线"模型联系起来:POO并且Design Pattern有助于救援.弄脏你的手,不要犹豫,深入研究源代码!
我们建议您根据源代码推出自己的"离线"模型,jenssegers/laravel-model并扩展"在线" Illuminate\Database\Eloquent\Model(装饰模式或其他!?),使其了解前者.管道留给你,到目前为止没有勺子喂代码;-)
您可能会需要定义的一些自定义的依赖(助手)类Illuminate\Database\Eloquent\Model,如Illuminate\Database\Eloquent\Relations\BelongsToMany等.
FIY,您还可以使用最新的PHP功能找到在Illuminate\Database\Eloquent\Model此 扩展jarektkaczyk/Eloquent-triple-pivot的相关示例.
快乐的编码.
您应该将对象视为集合,以"脱机"工作.并记住构建它们不存在的对象.
$ingredient = new Ingredient;
$ingredient->id = 5;
$meal = new Meal;
$meal->ingredients->add($ingredient);
Run Code Online (Sandbox Code Playgroud)
因此DB中不存在膳食和成分数5.