雄辩的多对多获取数据

时间:2018-10-31 14:34:53

标签: php database laravel-5 routes many-to-many

所以,伙计们,我开始学习laravel,但是目前我陷入了一个无法找到任何解决方案的问题...我找到了一些相关的解决方案,但是在尝试都没有解决我的问题之后, :

我正在创建博客,因此我有帖子,标签和类别。 从这里开始,帖子仅属于一个类别,而类别可以属于许多帖子。 现在,帖子属于许多标签,因为标签属于许多帖子...问题!

我有我的数据透视表,并且一切正常,真正的问题是当我需要从该数据透视表中检索数据时,我无法弄清楚它应该如何工作。

我想做的基本上是,如果没有与之相关的帖子,用户只能删除该标签。

帖子模型

public function tags()
{
    return $this->belongsToMany('App\Tag');
}

标记模型

public function posts()
{
    $this->belongsToMany('App\Post');
}

标记控制器(删除方法)

public function delete($id)
{
    // Get tag by ID
    $tag = Tag::find($id);
    $tag_name = $tag->tag;

    /** Try to check data */
    if($tag->posts->count() > 0) {
        Session::flash('error', 'There is some associated posts to "' . $tag_name . '", delete them before.');
    } else {
        Session::flash('success', 'Tag "' . $tag_name . '" was deleted successfully.');
        //$tag->delete();
    }

    return redirect()->back();
}

我尝试过

$tag->posts()->get()
$tag->posts->get()
Tag::find(1)->posts->get()
Tag::where('id', [1])->get()

其他一些组合,每一个组合都会返回逻辑异常或致命错误...

App\Tag::posts must return a relationship instance

查看按钮(传递ID)

<a href="{{ route('tags.delete', ['id' => $tag->id]) }}" class="btn btn-sm btn-danger"><i class="fas fa-trash"></i> Delete</a>

在web.php中路由

Route::get('/tags/delete/{id}', 'TagsController@delete')->name('tags.delete');

很长时间以来,我一直在努力从多对多数据中检索数据,这开始变得压力很大。

0 个答案:

没有答案