首页
学习
活动
专区
工具
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应用的部署和数据库存储需求。

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

相关·内容

3分钟短文:Laravel模板,也支持一般编程语言的语法结构了

laravel的模板系统,还提供了很多常用的编程语言的语法结构,其实是PHP的变体, 可以让编程人员更好地掌控HTML输出。 本期就来说说模板内的程序结构的高阶用法。...laravel给了一个简洁的判空的方式,就是 or 语法,很直观,代码用起来如下: Welcome, {{ $name or 'Laravel Member' }}!...laravel模板是支持循环结构的,我们下面演示一下。...在浏览器内访问路由,可以看到输出的HTML内容如下: 对于多层嵌套的 if ... elseif ... else 这样的语法,模板也是支持的,所能形成的判断逻辑也更为复杂, 上述代码我们再加点“料”...: 执行结束后生成的HTML内容如下: 写在最后 本文我们介绍了MVC模式中的V部分,在视图内使用了简单的条件判断和循环语法

1.9K00

宇宙最强语言PHP的“全栈”框架——Laravel来了!

应该使用什么语法?怎么做好控制器?应该把它们放在哪里,以及如何加载它们?可能需要一个依赖注入容器来解决控制器及其依赖问题,但是具体选择哪一个呢?...Laravel的核心是为开发人员提供装备和支持。它的目标是提供清晰、简单、漂亮的代码和特性,帮助开发人员快速学习和开发,并编写出简单、清晰和持久的代码。...但是,把开发人员的快乐作为首要关注对象而不是次要的问题,这一Laravel的风格和决策过程产生了巨大的影响。...▼ 本文节选自博文视点新书《Laravel入门与实战》(第2版),本书第1版收获了许多读者的好评,第2版迎来Laravel版本升级,覆盖更多前沿内容! 第2版完全涵盖Laravel 5.8版本的内容。...包含新版本的全面知识 这是一本实用的Laravel 技术指南,第2 版完全涵盖Laravel 5.8 版本的内容。

2.3K10

Laravel项目中timeAgo字段语言转换的改善方法示例

前言 在我们过去的Laravel项目中,经常需要用到time_ago这样的字段,并将其转换为我们熟悉的本地语言,可以实现的方式有很多,比如编写一个time_ago的辅助函数将其转换成本地,或采用carbon...,就显得不太方便.但是最近翻阅carbon的官方文档时,发现carbon是支持多语言的,也就是上面的事情,carbon都实现过了…(这为我们的技术债又添上了一笔) 如果我们想支持中文的话,我们可以为模型上添加以上方法...:https://carbon.nesbot.com/contribute/translate/ carbon2.0默认在laravel5.8开始支持,如果是低于该版本的话,可以通过以下方式来使用carbon2.0...,如laravel5.6 在composer.json中添加以下选项 { "require": { "nesbot/carbon": "2.24.0 as 1.39.0", "kylekatarnls.../laravel-carbon-2": "^1.0.0" } } 然后执行composer update来更新我们的依赖项 composer update 最后送上carbon官方文档地址:https

73931

PHP-Laravel入门使用(路由)

二、Laravel入门使用(路由) 什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理....如果还有更多的路由需要去定义,则仿照上述的形式语法继续编写即可。但是只要需要访问,则必须需要定义路由。 如果路由错误或者没有定义则会看到以下错误页面(以Laravel5.4.30为准) ?...扩展: 路由参数除了上述的2种传递方式之后,还支持传统的路由参数传递: url?...id=xxx&aaa=xxxx 这种方式传递参数不受路由的限制的,不需要在路由文件中事先定义好路由参数,例如: ? ?...案例:编写路由/home/test/test1和/home/test/test2,要求使用路由群组 公共:/home/test Route::group([‘prefix’ => ‘home/test

1.9K20

【说站】健身类小程序前后端源码

本文编程笔记首发 健身类小程序前后端源码 环境要求: PHP >= 7.0 (推荐7.2+) Laravel 5.6+ 安装步骤: 安装PHP环境(请自行百度) 将源码上传到 web 目录...参考 Laravel 安装步骤就可以了 小程序源码是 weapp 目录,用 HBuilder 打开,填写自己小程序的 appid 配置好域名即可 推荐使用宝塔安装,比较省事,还有 PHP 相关的扩展需要启用...,有些函数也需要启用(laravel 需要用到一些函数)。...5.8,源码在健身小程序源码压缩包里的api.zip 部署环境 建议使用宝塔面板,配置好 php7.2 + mysql5 ,建立一个站点,然后将解压后的源码上传到该目录下 宝塔面板->网站->本站...收藏 | 0赞 | 0打赏

1.2K20

PHP框架探索:流行框架的优缺点详解

Laravel 优点: 优雅的语法Laravel以其清晰、简洁的语法而闻名,使得代码易读易懂,降低了学习曲线。...缺点: 性能相对较低:相较于一些轻量级框架,Laravel可能在极高并发场景下性能稍逊一筹。 学习曲线较陡:尽管语法优雅,但对于初学者来说,Laravel的某些高级功能可能需要一些时间来掌握。...强大的社区支持:Symfony有庞大的社区,提供大量文档、教程和支持,有助于解决开发过程中的问题。...优秀的文档和社区支持:CodeIgniter拥有清晰明了的文档,以及积极的社区支持。 缺点: 功能相对较少:相对于一些大型框架,CodeIgniter的功能相对较少,不适合复杂的大型应用。...收藏 | 0赞 | 0打赏

26210
领券