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

Laravel MorphToMany不适用于多列

Laravel MorphToMany是Laravel框架中的一个关联关系方法,用于多态多对多关系的建立。它适用于单列多态关联,即一个模型通过多态关联可以与多个不同类型的模型建立多对多关系。

然而,Laravel MorphToMany不适用于多列多态关联,即一个模型通过多态关联需要与多个不同类型的模型的多个列建立多对多关系。在这种情况下,我们需要使用Laravel的Polymorphic Pivot Tables来实现多列多态关联。

Polymorphic Pivot Tables是Laravel框架中的一种技术,它允许我们在多态关联中使用自定义的中间表,并且可以通过中间表的多个列来建立多对多关系。通过使用Polymorphic Pivot Tables,我们可以在多个模型之间建立复杂的多对多关系。

在Laravel中,我们可以通过定义自定义的中间表模型来实现多列多态关联。首先,我们需要在中间表模型中定义多态关联的列,然后在相关模型中使用belongsToMany方法来建立多对多关系。

以下是一个示例代码,演示了如何在Laravel中实现多列多态关联:

代码语言:txt
复制
// 中间表模型
class CustomPivot extends Model
{
    protected $table = 'custom_pivot';

    public function model1()
    {
        return $this->morphTo('model1', 'model1_type', 'model1_id');
    }

    public function model2()
    {
        return $this->morphTo('model2', 'model2_type', 'model2_id');
    }
}

// 模型1
class Model1 extends Model
{
    public function model2s()
    {
        return $this->belongsToMany(Model2::class, 'custom_pivot', 'model1_id', 'model2_id')
            ->withPivot('model2_type');
    }
}

// 模型2
class Model2 extends Model
{
    public function model1s()
    {
        return $this->belongsToMany(Model1::class, 'custom_pivot', 'model2_id', 'model1_id')
            ->withPivot('model1_type');
    }
}

在上述示例中,我们定义了一个名为CustomPivot的中间表模型,其中包含了两个多态关联的列model1_typemodel1_id,以及model2_typemodel2_id。然后,在Model1Model2模型中,我们使用belongsToMany方法来建立多对多关系,并指定自定义的中间表和关联的列。

通过以上的代码,我们可以实现多列多态关联,并且可以根据实际需求进行灵活的操作和查询。

关于Laravel的多态关联和Polymorphic Pivot Tables的更多详细信息,您可以参考腾讯云的Laravel文档:Laravel 多态关联

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

相关·内容

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

Laravel 优点: 优雅的语法:Laravel以其清晰、简洁的语法而闻名,使得代码易读易懂,降低了学习曲线。...缺点: 性能相对较低:相较于一些轻量级框架,Laravel可能在极高并发场景下性能稍逊一筹。 学习曲线较陡:尽管语法优雅,但对于初学者来说,Laravel的某些高级功能可能需要一些时间来掌握。...缺点: 相对于其他框架较复杂:Symfony的灵活性和可扩展性可能导致一些开发者认为它相对复杂,不适合小型项目。...较大的内存占用:在资源受限的环境下,Symfony可能占用较多内存,不适用于所有应用场景。...Laravel用于中大型项目,Symfony提供高度的灵活性,而CodeIgniter则适合小型项目和初学者。最终选择取决于开发者对项目的具体需求和对框架的偏好。

33110
  • Laravel 模型关联基础教程详解

    Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...Laravel 有 3 种不同的关联类型。 一对一 一对 我们将逐个探讨不同的关联类型并解释一下应该什么时候使用它们。 一对一 一对一关联是目前存在的最基本的关联。...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联的方法都有可选的额外参数,你可以在这些参数中定义本地键和外键。...Model { public function invoices() { return $this- hasMany(App\Invoice::class); } } 它看起来就像我们之前用于定义一对一关联的代码...idproducts: - id - supplier_idproduct_history: - id - product_id 即使 product_history 表不包含 supplier_id

    5.5K31

    laravel5.6框架操作数据curd写法(查询构建器)实例分析

    本文实例讲述了laravel5.6框架操作数据curd写法(查询构建器)。分享给大家供大家参考,具体如下: laravel5.6 数据库操作-查询构建器 <?...users where id = :id and name = :name ',[':id' = 1,':name' = '测试']); //查方法 //get() 方法获取表中所有记录(获取多行...::table('users') - where('id', ' =', 1) - where('name', 'like', '测试%') - get(); //传递条件数组到where中写法,建议where...操作数据ORM 更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程...》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

    2.2K30

    3分钟短文 | Laravel获取关联表指定的3个方法

    今天我们说一说,在Laravel中,如何关联模型,以及制定返回,以精简返回数据。 学习时间 假如有两个模型 User 和 Post,一个用户会发布多个post,也就是一对的关联关系。...`id` in (, ) 显然,第二条SQL语句,返回了user表的所有,数据量有可能很大。是否可以返回指定呢?这样可以精简输出,减少MySQL的传输负荷。...with语句 模型的with语句用于调用模型内声明的关联关系,其实它接收一个数组,可以在查询时关联多张表,同时支持一个闭包,用于对关联表的查询语句进行裁切。...}))->get(); 闭包内$query拼接SQL语句,并指定 select 选取的,那么框架生成的SQL语句,就只会返回 id,username 。...public function user() { return $this->belongsTo('User')->select(array('id', 'username')); } 特殊性 在Laravel5.5

    2K20

    Vuebnb:一个用vue.js和Laravel构建的全栈应用

    在这篇文章中,我会把它如何工作做一个高层次的概述,好让你了解如何从零开始参与建设一个Vue/Laravel构建的全栈应用。...一个CSS的转换 transform: translate(..)用于将图像移动到另一侧,而转换则提供滑动效果。我用vue.js绑定的translate以便用左,右箭头控制值。...通过Laravel的验证接口来验证相关API调用。 在后端和前端之间共享数据 全栈应用程序的关键考虑之一是如何在后端和前端之间进行数据通信,所以我花了相当的时间来处理这本书中的问题。...例如,有一数据是从Laravel到内页的,Vue.js通过使用刀片视图来实现,可以很容易地使用模板变量向页面头部注入数据。这个数据可以在Vue应用程序中就初始化。...解决方案包括一个协同使用Vue的Vue-Router,Vuex和Axios一起创造一个令人惊讶的简单机制,在需要用于检索数据时使用它。 ?

    6K10

    Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解

    注意:文章标题中5.2+表示该文章内容可向上兼容,适用于Laravel版本5.2及更高(目前最新为5.6),但不可向下兼容,即不适用于5.2版本以下。...推荐大家花一点点时间,将自己的Laravel更新至5.6版本。 在后台开发时,我们经常需要获取用户之前操作页面的地址并生成一个返回之前页面的链接。...而Laravel从版本5.2+开始,便提供了一系列全局帮助函数(Helper Functions)来简化我们的工作: https://laravel.com/docs/5.2/helpers#method-url...本文主要讲解了Laravel框架使用url()全局函数返回前一个页面的地址的方法,更多关于Laravel框架的使用技巧请查看下面的相关链接

    1.3K20

    Laravel 使用Excel导出的文件中,指定数据格式为日期,方便后期的数据筛选操作

    背景 最近,后台运维要求导出的 Excel文件,对于时间的筛选,能满足年份、月份的选择 通过了解,发现: 先前导出的文件,默认数据都是字符串(文本)格式 同时,因为用的是 Laravel-excel...控件版本的问题,要实现的方式也不同 在此,根据版本不同,进行步骤整理,以便能帮助到有需要的小伙伴 … 所要达成的目标 框架 Laravel 版本: Laravel5.8 Excel...但是,还需添加两天(容错处理) 3. 并且,无需手动 在天数后面拼接一个"\t" 调用参考 //指定下单日期,需要计算从 1900-01-01到目标日期的天数 ......@param array $cellData 数据 * @param string $sheetName 工作表名 * @param array $columnFormat 格式...导出的时候写入的日期格式数据怎么在excel中正确显示成可以筛选的日期格式数据 Laravel Excel 3.1 导出表格详解(自定义sheet,合并单元格,设置样式,格式化数据)

    10510

    Laravel 中Facade门面是怎么实现?有没有其他实现方式?

    Laravel 中Facade门面的实现 Route::get('/', function () { return view('welcome'); }); 在laravel中的路由文件routes.../web.php有这么一段代码,用于配置路由。...Laravel中的Facade解决了什么问题? 在php中,很多情况都需要使用一个容器获取到所有的对象,然后再调用改对象的方法,这样在编写代码的时候就会看到很长的一个调用链。...Laravel中Facade是怎么实现的? 思路是通过__callStatic魔术方法将方法调用代理到实际的对象方法中去。 ?...PHP本身只能继承一个类,所以第二种实现方式对于一些需要继承其他类的对象是不适合的。 Laravel的实现方式,对类本身没有束缚,任何类对象都能够通过创建一个Facade对象实现静态代理。

    79730

    svn更换服务器地址_如何登录svn服务器

    返回上一级目录,重新链接当前的svn服务器地址到目录中,完成信息认证后等待即可 3.进入项目目录,查看项目绑定的svn服务器地址是否更改 4.本地再重新进行项目chekcout皆可 ---- 描述 本文适用于服务器镜像复制的情况...,即svn在原本的服务器上,在服务器控制台上,将原本服务器的镜像导入新的服务器中,因此可能并不适用于所有的情况; 操作步骤 1.将快到期的服务器镜像进行导出,在新的服务器上进入镜像导入,等待完成即可;...2.由于是镜像复制,因此原本的svn配置一致,只需要修改分支绑定的服务器域名即可,如下所示: 查看迁移后的svn项目绑定的服务器信息 # 进入到项目目录中 cd /目录路径/laravel # 查看项目绑定.../laravel # 查看目录 ls -a # 删除.svn目录 rm -rf .svn/ 返回上一级目录,重新链接当前的svn服务器地址到目录中,完成信息认证后等待即可 # 返回上级目录 cd .....# 链接svn项目到真实项目地址 svn co svn://ip地址/laravel /代码目录/laravel 3.进入项目目录,查看项目绑定的svn服务器地址是否更改 # 进入项目目录 cd laravel

    5.2K40

    一款开源,美观,带后台管理的网址导航工具:WebStack-Laravel

    说明:网址导航之前发过几个,不过大多都没有后台管理,都是通过修改代码来添加相应的网站,用起来不是很方便,这里就介绍个开源的网址导航网站项目WebStack-Laravel,具备完整的前后台,管理方便,很适合拿来制作自己的网址导航...截图 安装 Github地址:https://github.com/hui-ho/WebStack-Laravel 所需环境:PHP 7.1+、Mysql、Nginx 1、安装宝塔 #CentOS系统...#如果Fileinfo拓展安装失败,就是内存太小,我们可以添加swap,不适用于ovz 1、脚本添加,脚本地址:https://www.moerats.com/archives/722/。...#拉取代码 git clone https://github.com/hui-ho/WebStack-Laravel.git #安装依赖 cd WebStack-Laravel rm -rf composer.lock...php artisan key:generate #迁移数据,对于有提示的,输入yes即可 php artisan migrate:refresh --seed 然后新建Systemd配置文件,只适用于

    4.9K00

    一款开源,美观,带后台管理的网址导航工具:WebStack-Laravel

    说明:网址导航之前发过几个,不过大多都没有后台管理,都是通过修改代码来添加相应的网站,用起来不是很方便,这里就介绍个开源的网址导航网站项目WebStack-Laravel,具备完整的前后台,管理方便,很适合拿来制作自己的网址导航...截图 安装 Github地址:https://github.com/hui-ho/WebStack-Laravel 所需环境:PHP 7.1+、Mysql、Nginx 1、安装宝塔 #CentOS系统...#如果Fileinfo拓展安装失败,就是内存太小,我们可以添加swap,不适用于ovz 1、脚本添加,脚本地址:https://www.moerats.com/archives/722/。...#拉取代码 git clone https://github.com/hui-ho/WebStack-Laravel.git #安装依赖 cd WebStack-Laravel rm -rf composer.lock...php artisan key:generate #迁移数据,对于有提示的,输入yes即可 php artisan migrate:refresh --seed 然后新建Systemd配置文件,只适用于

    2.9K21

    分享8个Laravel模型时间戳使用技巧小结

    默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两个字段。当然,我们可以做很多自定义配置,实现很多有趣的功能。下面举例说明。 1....Laravel 在自动填充 created_at / updated_at 的时候,无法找到这两个字段。...修改时间戳默认列表 假如当前使用的是非 Laravel 类型的数据库,也就是你的时间戳的命名方式与此不同该怎么办? 也许,它们分别叫做 create_time 和 update_time。...:带时间戳的中间表 当在的关联中,时间戳不会自动填充,例如 用户表 users 和 角色表 roles 的中间表 role_user。...仅更新时间戳和关联时间戳 与上一个例子恰好相反,也许您需要仅更新 updated_at 字段,而不改变其他

    3.8K31

    Laravel5.7 数据库操作迁移的实现方法

    Laravel 的 Schema 门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、流式的 API。...up 方法用于新增表,或者索引到数据库,而 down 方法就是 up 方法的逆操作,和 up 里的操作相反。...用于软删除 $table- softDeletesTz(); 新增一个允许为空的deleted_atTIMESTAMP (带时区)用于软删除 $table- string(‘name’, 100)...); 你甚至可以传递列名数组到索引方法来创建组合索引: $table- index(['account_id', 'created_at']); Laravel 会自动生成合理的索引名称,不过你也可以传递第二个参数到该方法用于指定索引名称...(['state']); // Drops index 'geo_state_index' }); 外键约束 Laravel 还提供了创建外键约束的支持,用于在数据库层面强制引用完整性。

    3.8K31

    Laravel5.1 框架模型远层一对多关系实例分析

    本文实例讲述了Laravel5.1 框架模型远层一对多关系。...分享给大家供大家参考,具体如下: 远层一对我们可以通过一个例子来充分的了解它: 每一篇文章都肯定有并且只有一个发布者 发布者可以有篇文章,这是一个一对的关系。...text('body'); $table- integer('user_id'); $table- timestamps(); }); } 1.2 在users表中添加一...相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总...》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

    1.4K20

    Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】

    ---- Laravel 5 中文文档: 1. http://laravel-china.org/docs/5.0 2. http://www.golaravel.com/laravel/docs/5.0...本文需要你付出一定的心智去解决一些或大或小的隐藏任务,以达到真正理解 Laravel 运行逻辑的目的。 1. 安装 许多人被拦在了学习Laravel的第一步,安装。...并不是因为安装教程有复杂,而是因为【众所周知的原因】。在此我推荐一个composer全量中国镜像:http://pkg.phpcomposer.com/ 。...不想配置镜像的同学,可以使用 Laravel 界非常著名的 安正超 搞的安装神器:https://github.com/overtrue/latest-laravel 3....如果你从其他框架转过来,可能对这里一笔带过的 Model 部分很不适应,没办法,是因为 Eloquent 实在太强大了啦,真的没什么好做的,继承一下 Eloquent 类就能实现很多很多功能了。

    3.4K20
    领券