我有一个非常复杂的形式,它有很多字段 - 一切正常,但我还需要存储一个slug和缩略图的路径。问题是,当我使用存储方法并创建帖子时,我需要根据帖子ID(尚未创建,因此我没有ID)动态创建slug和路径。
这是我用来存储主要帖子数据的代码块:
Post::forceCreate([
'title' => $title,
'slug' => create_url_slug($title, $id),
'thumbnail' => thumbPath($id),
'description' => request('description'),
'password' => bcrypt(request('password')),
'user_id' => get_user_id()
]);
这里我通过了两个函数 - > create_url_slug和thumbPath。如果我将这些函数放在这个代码块之上,则会抛出错误,因为ID尚不存在。另一方面,如果我将这些函数放在此代码下,则也会出现错误,因为这些函数将是未定义的。我可以以某种方式使用闭包或将此方法分为两部分吗?
提前感谢任何人。
答案 0 :(得分:1)
执行此操作的方法是在分配值(例如
)后立即创建模型$post = Post::forceCreate([
'title' => $title,
'description' => request('description'),
'password' => bcrypt(request('password')),
'user_id' => get_user_id()
]);
$post->slug = create_url_slug($title, $post->id);
$post->thumbnail = thumbPath($post->id);
$post->save();
我不记得make
是否为模型创建了一个id,否则你可以使用Post::make
并保存对数据库的调用。值得一试。