首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel源码分析之模型关联

使用模型关联给应用开发带来的收益我认为有以下几点 主体数据和关联数据之间的关系代码表现更明显易懂让人一眼就能明白数据间的关系。...使用模型关联预加载后,效率上高于开发者自己写join和子查询,模型关联底层是通过分别查询主体和关联数据再将它们关联匹配到一起。...动态属性加载关联模型 上面我们定义了三种使用频次比较高的模型关联,下面我们再来看一下使用它们关联模型如何加载出来的。...Model 的 get方法获取模型时会预加载的关联模型,获取关联模型给关系应用约束的 addEagerConstraints方法是具体的关联类中定义的,我们可以看下HasMany类的这个方法。...*注: 下面的代码为了阅读方便我把一些父类里定义的方法拿到了HasMany中,自己阅读如果找不到请去父类中找一下。

9.5K10

TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)

model/Goods.php 分类表中创建关联 namespace app\common\model; class Category extends Base { public function goods...(){ return $this->hasMany('Goods','category_id','id'); } } 接着就可以使用关联模型查询数据 public function list(...,product.property')->where('id',1)->find(); } 调用关联模型查询数据,如果我们需要动态隐藏字段,或者给记录排序时可以这么做 class Category...function list(){ //with中可以传递一个闭包函数,函数的参数为当前key锁对应模型的查询器 $this //闭包函数中无需使用select或者find等返回数据 //如下操作返回...理论可以关联的两张表中建立关联关系,例如用户表User 和用户信息表 Profile 是一对一的关系,假设在Profile表中user_id字段指向User表的id字段,那么User表中可以建立外键

1.4K20

Yii2 学习笔记之数据库篇

不想使用被缓存的数据,可以使用unset($customer->country);来清除缓存,那么下次调用则会重新执行查询SQL。...2.使用with() with例子 // SQL中一次性级联查询,调用相关数据,都直接在查询出来的数据中直接获取 // 查询客户与他们的订单和国家 $customerList = CustomerModel...查询加了->select();如下,要加上order_id,即关联的字段(比如:order_id)比如要在select中,否则会报错:undefined index order_id // 查询客户与他们的订单和国家...SQL:SELECT * FROM user WHERE user_id IN (1,2,…) C) 再通过关联表SQL数据进行内存分配到各自的主表的每条数据。...只有A步骤不一样,A步骤的主表查询出使用的是关联SQL查询,如 SELECT * FROM order LEFT JOIN user ON order.user_id=[user.id](http://

3.1K70

Laravel Eloquent 模型关联关系详解(

(UserProfile::class); } 我们通过数据库填充技术 user_profiles 插入一些数据,这样就可以 User 模型实例通过关联方法名作为动态属性访问与其对应的 UserProfile...你可能注意到了我们定义关联关系,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认的约定。...遵循这种默认的约定,可以帮我们少写很多代码,减少很多额外的配置,所以如果不是迫不得已(比如从其他系统迁移过来),建议你使用 Eloquent 的话,尽量遵循这些默认约定。...->hasMany(Post::class); } 由于我们之间已经创建过 users 表和 posts 表,并且初始化过数据,所以我们可以直接通过动态属性的方式来调用用户模型的文章: $user...建立相对的关联关系 与一对一一样,我们可以文章模型中建立与用户模型之间的相对关联关系,而且这种使用场景很普遍,比如在文章详细页或列表页显示文章作者信息。

9.8K40

3分钟短文:说说Laravel模型中还算常用的2个“关系”

引言 一章我们介绍了比较简单的laravel模型关联关系中的一对一,介绍了关联操作方法。...代码中使用关联关系: $email = Profile::where('id', 3)->first()->user->email; 其中first方法返回一个Profile模型对象实例,Profile...我们说关联关系需要外键,所以需要手动events表内追加一个字段 state_id,用于指向刚才创建的表states的id字段。...41; $event->save(); 注意,hasMany关联关系,返回的是多个模型的集合,可以后续链式调用集合的所有方法。...写在最后 本文不失简单地介绍了belongsTo和hasMany两个关联关系,这在代码中仅次于hasOne关系, 使用的频次比较高的。而效率也就是根据外键多查询一次SQL的消耗而已。

2.1K31

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

User模型中,指定此关系: public function post(){ return $this->hasmany('Post'); } 反过来,Post模型中,必然有一个发布者,是一对一的映射...with语句 模型的with语句用于调用模型内声明的关联关系,其实它接收一个数组,可以查询关联多张表,同时支持一个闭包,用于对关联表的查询语句进行裁切。...关联关系 我们注意到,关联关系的声明,第一节仅使用了 belongTo,hasMany 这样的属性,其实还可以链式调用。这样对于所有使用 with 语句关联的模型查询,都会生效。...及以上的版本,支持使用with语句的使用,按照格式书写返回指定列。...:-( 写在最后 本文通过2种确切可用的方式,裁剪了关联模型返回列的内容。 实际代码中,第一种使用闭包修剪SQL语句,用途较为广泛。 第二种方式影响全局,一般不推荐。

2K20

Ext JS 教程-ExtJS 4中的数据包(Package)

同样的,Post模型获得了一个comments()函数,因为我们有有许多(hasMany)Comment 关联的设置。...调用sync()通过它配置的代理保存了这个新的Post —— 这里再次是一个传入一个你想在操作完成通知到的回调的同步操作。 belongsTo关联也会在模型中生成新的方法。...这是因为上面的例子假设当我们做一次获取所有用户的请求服务器返回用户数据,附带返回它所有内嵌的Post和Comments。通过像我们上面那样设置关联,框架能够自动的一个单独的请求中转出内嵌的数据。...使用ExtJS 3,模型和存储框架的许多的组件如Grid,Tree和Form被用到。 可以工作的模型使用关联的例子,见Associations and Validations。...如果你需要仅在必要“懒加载”关联的数据,这会是很有用的。让我像以前以前只加载User的数据,除了我们假定回应只包含User数据,没有任何关联的Post。

1.2K20
领券