【问题标题】:Store slug and path based on post ID which is created before in Laravel根据之前在 Laravel 中创建的帖子 ID 存储 slug 和路径
【发布时间】:2018-08-02 17:52:47
【问题描述】:

我有一个非常复杂的表单,其中包含很多字段 - 一切正常,但我还需要存储一个 slug 和缩略图路径。问题是,当我使用 store 方法并创建帖子时,我需要根据帖子 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 尚不存在。另一方面,如果我将这些函数放在这段代码下,也会出现错误,因为这些函数是未定义的。我可以以某种方式使用闭包或将此方法分为两部分吗?

提前谢谢大家。

【问题讨论】:

    标签: php laravel closures


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

    【讨论】:

    • 很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    相关资源
    最近更新 更多