根据之前在Laravel

时间:2018-02-22 18:35:09

标签: php laravel closures

我有一个非常复杂的形式,它有很多字段 - 一切正常,但我还需要存储一个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尚不存在。另一方面,如果我将这些函数放在此代码下,则也会出现错误,因为这些函数将是未定义的。我可以以某种方式使用闭包或将此方法分为两部分吗?

提前感谢任何人。

1 个答案:

答案 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并保存对数据库的调用。值得一试。