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

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

今天我们说一说,Laravel,如何关联模型,以及制定返回列,以精简返回数据。 学习时间 假如有两个模型 User 和 Post,一个用户会发布多个post,也就是一对多关联关系。...User模型,指定此关系: public function post(){ return $this->hasmany('Post'); } 反过来,Post模型,必然有一个发布者,是一对一映射...`id` in (, ) 显然,第二条SQL语句,返回了user表所有列,数据量有可能很大。是否可以返回指定列呢?这样可以精简输出,减少MySQL传输负荷。...with语句 模型with语句用于调用模型内声明关联关系,其实它接收一个数组,可以查询时关联多张表,同时支持一个闭包,用于对关联表查询语句进行裁切。...关联关系 我们注意到,关联关系声明上,第一节仅使用了 belongTo,hasMany 这样属性,其实还可以链式调用。这样对于所有使用 with 语句关联模型查询,都会生效。

2K20

Laravel源码分析之模型关联

为了阅读方便我们把这几个有继承关系构造方法放在一起,看看定义一对多关返回HasMany实例时都做了什么。...、关联模型、父模型中间表外键名、关联模型中间表外键名、父模型主键、关联模型主键、关联关系名称。...getResults也是每个Relation子类需要实现方法,这样每种关联都可以根据自己情况去执行查询获取关联模型,现在这个例子用是一对多关联, hasMany我们可以看到这个方法定义如下:...Model get方法获取模型时会预加载关联模型,获取关联模型时给关系应用约束 addEagerConstraints方法是具体关联类定义,我们可以看下HasMany这个方法。...*注: 下面的代码为了阅读方便我把一些父类里定义方法拿到了HasMany,自己阅读时如果找不到请去父类找一下。

9.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

推荐17-Laravel 中使用 JWT 认证 Restful API

教程接下来步骤只 5.5 和 5.6 测试过。可能不适用于 Laravel 5.4 或以下版本。您可以阅读 针对旧版本 Laravel 文档 。...以输入值作为参数调用 JWTAuth::attempt() ,响应保存在一个变量。如果 attempt 方法返回 false ,则返回一个失败响应。否则,将返回一个成功响应。... logout 方法,验证请求是否包含令牌验证。通过调用 invalidate 方法使令牌无效,并返回一个成功响应。如果捕获到 JWTException 异常,则返回一个失败响应。... getAuthUser 方法,验证请求是否包含令牌字段。然后调用 authenticate 方法,该方法返回经过身份验证用户。最后,返回带有用户响应。 身份验证部分现在已经完成。...index , 为经过身份认证用户获取所有产品列表 show , 根据 ID 获取特定产品 store , 将新产品存储到产品列表 update , 根据 ID 更新产品详情 destroy ,

10.9K20

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

引言 上一章我们介绍了比较简单laravel模型关联关系一对一,介绍了关联操作方法。...代码中使用该关联关系: $email = Profile::where('id', 3)->first()->user->email; 其中first方法返回一个Profile模型对象实例,Profile...类我们声明了 user() 方法用于关系用户模型, 所以此处链式调用 user 属性,返回是一个 App\User 对象实例,其包含 User 模型所有属性, 因此 email 属性也相应返回数据库内字段值...41; $event->save(); 注意,hasMany关联关系返回是多个模型集合,可以后续链式调用集合所有方法。...写在最后 本文不失简单地介绍了belongsTo和hasMany两个关联关系,这在代码仅次于hasOne关系, 使用频次比较高。而效率也就是根据外键多查询一次SQL消耗而已。

2.1K31

浅谈laravel orm 一对多关系 hasMany

个人对于laravel orm 对于一对多关系理解 文章表 article,文章自然可以评论,表 comment 记录文章评论,文章和评论关系就是一对多,一篇文章可以有多个评论。... comment 表中有字段article 记录评论所属文章,文章和评论关系如下: article:id … … comment : id … … article_id comment 表中有关联...article 外键 article_id,所以 Comment 模型是 belongsTo方法, Article 模型hasMany方法 文章模型 Article ,则可以有如下方法来关联评论...'(这里是关联外键字段名,这个例子就是 article_id 字段), ‘id'(对应关联模型主键,这里 id 是关联 article 表id)); } 对应 Comment 模型,则可以有如下方法来关联文章...'(这里是关联外键字段名,这个例子就是 article_id 字段), ‘id'(对应关联模型主键,这里 id 是关联 article 表id)); } 以上这篇浅谈laravel orm 一对多关系

1.8K31

laravel-nestedset:多级无限分类正确姿势

laravel-nestedset是一个关系型数据库遍历树larvel4-5插件包 目录: Nested Sets Model简介 安装要求 安装 开始使用 迁移文件 插入节点 获取节点 删除节点...它可以为一个新创建node或者是数据库取出node 插入节点(node) 每次插入或者移动一个节点都要执行好几条数据库操作,所有强烈推荐使用transaction. 注意!...$delete 代表是否删除数据库已存在但是$data不存在数据,默认为不删除。...model 假设每一个category has many goods, 并且 hasMany 关系已经建立,怎么样简单获取$category 和它所有后代下所有的goods?...让节点在父级内部上下移动来改变默认排序: $bool = $node->down(); $bool = $node->up(); // 向下移动3个兄弟节点 $bool = $node->down(3); 操作返回根据操作节点位置是否改变布尔值

3.4K20

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

本文实例讲述了Laravel5.1 框架模型远层一对多关系。...分享给大家供大家参考,具体如下: 远层一对多我们可以通过一个例子来充分了解它: 每一篇文章都肯定有并且只有一个发布者 发布者可以有多篇文章,这是一个一对多关系。...一个发布者可以来自于一个国家 但是一个国家可以有多个发布者,这又是一个一对多关系,那么 这其中存在一个远层一对多就是”国家和文章关系”。国家表可以通过发布者表远层关联到文章表。...首先是Country和User关系: Country模型: public function users() { return $this- hasMany(User::class);...》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

1.4K20

Laravel5.2之Seeder填充数据小技巧

说明:本文主要聊一聊Laravel测试数据填充器Seeder小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程一些截图和代码黏上去,提高阅读效率。...mpociot/laravel-test-factory-helper --dev 然后config/app.php文件填上: /** *Develop Plugin...设计字段 按照上文提到Category、Post、Comment和Tag之间关系创建迁移Migration和模型Model,项目根目录输入: php artisan make:model Category...,还需要一张存放两者关系表: //多对多关系,中间表命名laravel默认按照两张表字母排序来,写成tag_post会找不到中间表 php artisan make:migration create_post_tag_table...按照顺序依次填上Seeder,顺序不能颠倒,尤其有关联关系表: class DatabaseSeeder extends Seeder { /** * Run the database

3.5K42

玩转 PhpStorm 系列(二):导航篇

概述 日常使用代码编辑器过程,频率非常高一个需求就是能够快速全局导航到指定类、文件、方法、行, PhpStorm 可以通过两种方式来实现这种导航。...一种是菜单栏中点击 Navigate,然后在下拉框选择对应全局导航,Class 代表类、File 代表文件、Symbol 代表符号/标记(可用于导航到指定变量、方法)、Line 代表行(需要在特定文件操作...我们可以通过快捷键 Shift + Command + P 文件打开导航到文件操作界面,假设我们想要打开 Laravel 项目的数据库配置文件,可以输入框输入 database 进行文件名全局模糊匹配...如果想要打开定义 Laravel 自带辅助函数 helpers.php 文件,操作方法完全一样,只需导航输入框输入对应文件名即可: ?...导航到指定类/Trait成员方法或者独立 PHP 函数也是同一个操作界面操作,比如我们想要查看 Laravel 自带分页方法底层是如何实现可以输入框输入 paginate,然后选择我们想要查看方法实现即可

2.1K10

具有嵌套关系可重用API资源——Laravel5.5

这个命令会 Laravel 官方存储库中下载最新版本 Laravel 5.5 代码并安装到名为 "responses" 文件夹。...· 用户拥有posts关系app/User.phppublic function posts(){return $this->hasMany(Post::class);}这是在用户模型(User)定义与...Resource可以通过 $this 直接访问模型属性。这个神奇功能是通过 DelegatesToResource trait 基础资源类实现。...能够资源类中进行关系转换,但是有条件:如果数据是可用(已经预加载),就可以进行转换;如果数据尚未加载,可以选择忽略这个转换。...这样做有利于避免 N+1 查询问题(获取关联数据时出现效率问题),同时可以使用单个资源类处理不同情况。如果关联数据不可用,资源类会忽略它;反之,如果可用,资源类会将其包含在返回数据

11510

PHP-web框架Laravel-Eloquent ORM(三)

四、查询构建器Laravel框架Eloquent ORM提供了方便查询构建器,用于构建复杂查询语句。下面是一些常用查询构建器方法。...select方法select方法用于选择需要返回字段,例如:$users = User::select('name', 'email')->get();上述代码,只返回用户姓名和邮箱字段。...总结通过上述文档和示例,我们可以看出Laravel框架Eloquent ORM提供了便捷对象关系映射功能,可以大大简化开发者数据库操作。...使用Eloquent ORM进行开发时,需要注意以下几点:模型类名默认对应表名是模型类名复数形式,如User模型对应表名是users,如果需要指定表名可以通过定义$table属性来实现。...关联关系定义需要在对应模型类定义,例如一对一关联需要在hasOne和belongsTo方法定义,一对多关联需要在hasMany和belongsTo方法定义,多对多关联需要在belongsToMany

1.5K41

Laravel 模型操作中一次奇妙踩坑经历

最近被 Laravel 模型一些小问题折腾死去活来,明明看着很清晰很明了代码,却偏偏不能实现功能,现在带大家来切身经历一下这次奇妙踩坑经历,代码看似很多,实则不多,大家别急着跑,哈哈。...具体数据打印结果我就不贴出来了哈,占地方,哈哈,我直接说结果。 从打印结果可以看到 $userTask->tasks 是有合并之后数据,但是 $userTask 还是原先数据。...返回结果是修改了.... 这就尴尬了,难道是对象集合非对象属性不能这样赋值?也不对呀,思来想去决定对对象本身做一个探索,直接在 map 打印 $userTask : ?...attributes 做更改,这一点也可以 Model __set 魔术方法中看到,其中是有调用一个 setAttribute 方法,我们来看一下: ?...大公告成,可以说很优雅,哈哈,大家可能会问,你这直接返回了没有调用 toArray 啊,数据是怎么合并怎么转换

1.6K30

深入理解 Laravel Eloquent(三)——模型间关系(关联)

本篇文章,我将跟大家一起学习 Eloquent 中最复杂也是最难理解部分——模型间关系。...---- 这里最难地方在于后面的两个 foreign_key 和 local_key 设置,大家可以就此记住: User 类,无论 hasOne 谁,第二个参数都是 `user_id`,第三个参数一般都是...pay: id ... ... user_id User 和 Pay 具有一对多关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只 Pay 表存在一个 `user_id` 字段即可。...重要技巧:关系预载入 你也许已经发现了,一对一关系,如果我们需要一次性查询出10个 User 并带上对应 Account 的话,那么就需要给数据库打 1 + 10 条 SQL,这样性能是很差。...我们可以使用一个重要特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('

2.6K30

Laravel5.2之模型关联预加载

说明:本文主要说明Laravel Eloquent延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程一些截图和代码黏上去,提高阅读效率。...artisan ide-helper:generate php artisan ide-helper:models php artisan test-factory-helper:generate 表关系如图...: 然后写Seeder,可以参考Laravel5.2之Seeder填充数据小技巧: php artisan make:seeder MerchantTableSeeder php artisan make...预加载查询 (1)嵌套预加载 Eloquent通过属性访问关联数据时是延迟加载,就是只有该关联数据只有通过属性访问它时才会被加载。查找上层模型时可以通过预加载关联数据,避免N+1问题。...把原来N+1这种query改造成了where..in..这种query,效率提高不少。可以用EXPLAIN来查看SQL语句执行计划。

2.5K41

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

在数据库设计,常常会有如下这种关联模型,分类表中一条分类对应多个商品表商品 如果要获得分类表每条分类 以及 对应商品信息,则需要先查询分类表数据,然后根据结果遍历查询商品表,最后把数据拼接在一起...('property','goods_id','id'); } } 控制器调用: public function index() { return Category::with('product...function list(){ //with可以传递一个闭包函数,函数参数为当前key锁对应模型查询器 $this //闭包函数无需使用select或者find等返回数据 //如下操作返回...哪张表建立外键那么那张表就是表   2....理论上可以关联两张表建立关联关系,例如用户表User 和用户信息表 Profile 是一对一关系,假设在Profile表user_id字段指向User表id字段,那么User表可以建立外键

1.4K20
领券