首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 5.8 whereHasMorph“点”语法不受支持?

Laravel 5.8中的whereHasMorph方法是用于在多态关联关系中进行查询的方法。它允许我们根据多态关联关系的类型和ID来过滤查询结果。

然而,在Laravel 5.8中,whereHasMorph方法不支持使用“点”语法。这意味着我们不能在关联关系的多态类型上使用“点”语法来指定关联关系的属性或方法。

例如,假设我们有一个多态关联关系,其中一个模型是Post,另一个模型是Comment。我们想要查询所有具有特定标签的帖子和评论。在Laravel 5.8中,我们可以使用以下代码来实现:

代码语言:txt
复制
$tag = Tag::find(1);

$posts = Post::whereHasMorph('taggable', [Post::class, Comment::class], function ($query) use ($tag) {
    $query->where('tags.id', $tag->id);
})->get();

然而,如果我们尝试使用“点”语法来指定关联关系的属性或方法,例如tags.name,则会导致错误。

为了解决这个问题,我们可以使用闭包来手动连接关联表,并在闭包中进行查询。以下是一个示例:

代码语言:txt
复制
$tag = Tag::find(1);

$posts = Post::whereHasMorph('taggable', [Post::class, Comment::class], function ($query) use ($tag) {
    $query->whereHas('tags', function ($query) use ($tag) {
        $query->where('tags.name', $tag->name);
    });
})->get();

在这个示例中,我们使用了闭包来手动连接tags表,并在闭包中进行了查询。这样就可以使用“点”语法来指定关联关系的属性或方法。

总结:Laravel 5.8中的whereHasMorph方法不支持使用“点”语法来指定关联关系的属性或方法。为了解决这个问题,我们可以使用闭包来手动连接关联表,并在闭包中进行查询。

推荐的腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)和腾讯云数据库MySQL版(https://cloud.tencent.com/product/cdb_mysql)可以满足Laravel应用的部署和数据库存储需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券