标签: route-model-binding

Laravel BelongsTo 通过关系

如何在 Laravel 中实现 BelongsToThrough 关系?

我有表:

**projects_table**
id 

**categories_table**
id
project_id 

**properties_table**
id
category_id
Run Code Online (Sandbox Code Playgroud)

类别属于项目

public function project(){
    return $this->belongsTo('App\Project');
}
Run Code Online (Sandbox Code Playgroud)

属性属于类别

public function category(){
    return $this->belongsTo('App\Category');
}
Run Code Online (Sandbox Code Playgroud)

我们怎样才能建立关系?

物业按类别属于项目

public function project(){
     return $this->belongsToThrough('App\Project', 'App\Category');
}
Run Code Online (Sandbox Code Playgroud)

编辑问题。

因为我想在我的应用程序上进行多租户,而租户是 PORJECT。我想按项目分离类别和属性。

类别是属于项目财产是属于类别

所以我想通过类别在属性和项目之间建立关系。现在,我需要project_id类别属性表上添加:,我认为这不是正确的方法。

relationship laravel eloquent laravel-5 route-model-binding

6
推荐指数
2
解决办法
8935
查看次数

如何将路由模型绑定查找数据从 id 更改为 slug

我有一条如下所示的路线。

Route::get('/articles/{articleSlug}' , 
    [App\Http\Controllers\ArticleController::class, 'single']);
Run Code Online (Sandbox Code Playgroud)

single()at类的方法ArticleController如下:

public function single($slug)
{
    $article = Article::where('slug',$slug)->first();
    $article->increment('viewCount');

    return view('home.article',compact('article'));
}
Run Code Online (Sandbox Code Playgroud)

现在我希望使用路由模型绑定根据articles列从表中查找此数据slug。但据我所知,路由模型绑定是根据id查找数据的。那么如何将路由模型绑定查找数据从仅更改idslug仅用于ArticleController.php(意味着其他控制器类可以使用 id 作为路由模型绑定)?

php laravel eloquent route-model-binding laravel-8

4
推荐指数
1
解决办法
2708
查看次数

Laravel Route Model Binding 在不同模型使用相同结构时发生冲突

我正在尝试为两个模型创建路由模型绑定:“用户”和“文章”

Route::get('/{user}', 'UsersController@show');

Route::get('/{article}', 'ArticlesController@show');

问题是,其中一个总是优先于另一个,这取决于它们的声明顺序。

如果用户和文章恰好具有相同的路由,我希望用户路由优先于文章路由,但问题是 laravel 在与用户不匹配时返回 404 页面,即使路由应该匹配文章。

我知道您可以为此使用带有正则表达式的 where() 函数,但是这两个模型对路由键名称使用相同的结构(它们都是字符串)。我可以让正则表达式搜索数据库列或其他东西吗?

php laravel route-model-binding

1
推荐指数
1
解决办法
306
查看次数