Laravel - 使用 json 字段自定义路由模型绑定中的键

Laravel - Customize the key in the route model binding with json field

我想自定义路由模型绑定中的键,我做了这样的事情 -

use App\Models\Post;

Route::get('/posts/{post:slug}', function (Post $post) {
    return $post;
});

但我的 slug 是一个 json 多语言字段并保存这样的数据 -

{
  'en': 'hello'
  'ru': 'привет',
  'de': 'hallo',
}

我已经有一个机制来检索子域并将相应的前缀分配给某个 $subdomain 变量,所以我已经知道我应该从数据库中获取哪种语言,但是我如何将这个 $subdomain 嵌入路由本身?像 -

Route::get('/posts/{post:slug->$subdomain}', function (Post $post) {
    return $post;
});

我什至尝试将整个路线放入预定义的字符串中 -

$post_url = '/posts/{post:slug->'.$subdomain.'}';
Route::get($post_url, function (Post $post) {
    return $post;
});

而且它还导致不断出现 404 错误。 我做错了什么?

我的解决方案是像这样在 RouteServiceProvide.php 中显式绑定此路由 -

Route::bind('post', function ($value) {
            $slug = "slug->".$subdomain;
                return Post::where($slug, $value)->firstOrFail();
        });

然后我可以轻松访问任何语言版本的post。