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

在Laravel 5.6中使用where条件从两个表中获取数据

在Laravel 5.6中,可以使用where条件从两个表中获取数据。下面是一个完善且全面的答案:

在Laravel 5.6中,可以使用Eloquent ORM来处理数据库查询。当需要从两个表中获取数据时,可以使用join方法来连接这两个表,并使用where条件来筛选数据。

首先,需要在模型类中定义两个表之间的关联关系。假设我们有两个模型类:User和Order,User模型类对应users表,Order模型类对应orders表。在User模型类中,我们可以定义一个orders方法来表示与Order模型类的关联关系:

代码语言:txt
复制
class User extends Model
{
    public function orders()
    {
        return $this->hasMany(Order::class);
    }
}

在Order模型类中,我们可以定义一个user方法来表示与User模型类的关联关系:

代码语言:txt
复制
class Order extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

接下来,在控制器中可以使用以下代码来获取符合条件的数据:

代码语言:txt
复制
use App\User;
use App\Order;

$users = User::join('orders', 'users.id', '=', 'orders.user_id')
            ->where('users.name', 'John')
            ->where('orders.total_amount', '>', 100)
            ->select('users.*')
            ->get();

上述代码中,我们使用join方法连接users表和orders表,通过where条件筛选出满足条件的数据。在select方法中,我们选择了users表的所有字段。最后,使用get方法获取查询结果。

这样,我们就可以在Laravel 5.6中使用where条件从两个表中获取数据了。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb_mysql
  • 云数据库 PostgreSQL 版(CDB):https://cloud.tencent.com/product/cdb_postgresql
  • 云数据库 MongoDB 版(CDB):https://cloud.tencent.com/product/cdb_mongodb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网开发平台(TIoT):https://cloud.tencent.com/product/tiot
  • 腾讯云移动开发平台(MPS):https://cloud.tencent.com/product/mps
  • 腾讯云音视频处理(MPS):https://cloud.tencent.com/product/mps
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

本文实例讲述了laravel5.6框架操作数据curd写法(查询构建器)。分享给大家供大家参考,具体如下: laravel5.6 数据库操作-查询构建器 <?...::table('users')- get(); //first() 方法将会返回单个对象(获取一行一列) //where() 方法查询指定条件对象 $data = DB::table('users')...id','name', 'email')- get(); //value() 方法结果获取单个值,该方法会直接返回指定列的值: $data = DB::table('users')- where('...', 'like', '测试%') - get(); //传递条件数组到where写法,建议多where查询使用这个方法 $data = DB::table('users') - where([ ['...mysql5.7以后,默认开启group by的严格模式。 解决方法:找到config/database​.php mysql下面把’strict’ = true,改为false。

2.2K30

通过 Laravel 查询构建器实现复杂的查询语句

有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到一行记录后结果对象获取指定字段的值,但是 Laravel 为我们提供了更便捷的语法: $name = '学院君'; $...你一定有过这样的经历,数据获取指定查询结果后,以主键 ID 值为键,以某个字段值为值构建关联数组,以前,你可能不得不遍历查询结果构建数组才能解决这样的问题, Laravel ,我们只需查询构建器上调用...] ])->get(); or查询 日常查询,or 条件的查询也很常见,查询构建器,可以通过 orWhere 方法来实现: DB::table('posts')->where('id', '<...连接查询 相关术语 介绍连接查询之前,你需要对 SQL 的几种连接查询有所了解,SQL 连接查询通常分为以下几种类型: 内连接:使用比较运算符进行间的比较,查询与连接条件匹配的数据,可细分为等值连接和不等连接...where 条件子句,它将会返回被连接的两个的笛卡尔积,返回结果的行数等于两个行数的乘积,如果带 where,返回的是匹配的行数。

29.9K20

Laravel Eloquent 模型关联关系(下)

性能上来说,渴求式加载更优,因为它会提前数据库一次性查询所有关联数据,而懒惰式加载每次查询动态属性的时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以开发过程如果想优化性能...,如果返回的文章结果是列表的话,需要遍历获取作者信息,假设要循环 N 次的话,加上文章模型本身的获取,总共需要进行 N + 1 次查询,而 PHP 对数据库的连接是短连接,每次都要重新连接数据库,所以性能角度考虑不建议使用这种方式...注:实际开发为了提高查询性能,我们往往是 posts 冗余提供一个 comments_count 字段,每新增一条评论,该字段值加 1,查询的时候直接取该字段即可,从而提高查询的性能。...渴求式加载,也可以通过闭包传入额外的约束条件,只不过这个约束条件是对关联模型自身的过滤,不影响目标模型的查询: $post = Post::with(['comments' => function...`deleted_at` is null order by `created_at` desc 懒惰渴求式加载 有时候,你可能觉得一次性加载所有关联数据有点浪费,对于特定条件下才使用数据我们可以通过动态条件判断进行渴求式加载或者延迟加载

19.5K30

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

如果要查询整个使用get(),查询中一条数据使用first(),查询一条数据的某个字段用value(),查询中所有数据的某个字段用pluck() //get()返回中所有数据 $res=DB::...where([ ['id',' =',1003], ['id','<',1005] ])- get(); 通过orwhere()来连接两个并列条件,例如查询id =1003或者id<1002的数据...Eloquent默认会管理数据的创建时间、更新时间,对应数据的created_at、updated_at字段,你需要在创建时包含这两个字段。...使用create批量添加时,需要在模板通过fillable指定可以赋值的字段,也可以guard指定不允许赋值的字段。...; 当然也可以通过构建器的get()、first()来获取数据 通过上面的增删改查可以看出Eloquent可以使用查询构建器的所有方法,除了增删改查外,还有where、聚合函数等。

13.3K51

Laravel拼装SQL子查询的最佳实现

学习时间 对于数据库DBA可能更习惯SQL的角度出发,SQL现有的语言结构和功能上解决问题。...比如查询一个product,要求查询条件,product_catagory 的某些字段存在才能才回。 写多了容易无解,直接上SQL: ?...不止一个方法 解决问题的方法永远不止一个,Laravel你还可以不像上一节那样,虽然很明确,写的很标准,可是并不是所有开发者都能达到那样的熟练度。 我们说说通用的,一般开发者所能想到的一些方法。...->where('active', 1); }) ->get(); 这样使用 DB::raw,还有 whereRaw 方法,你几乎就是写原生的SQL语句了。比较直观。...写在最后 本文通过一个SQL语句查询Laravel的实现方式,解释了laravel拼装SQL查询时的自由度,使用起来非常灵活。

3.7K10

跟我一起学Laravel-数据库操作和查询构造器

 查询操作 基本查询操作 使用sql语句执行select查询操作 数据取得所有的数据查询单行/列 数据中分块查找数据数据查询某一列的列表 聚集函数 指定select查询条件...使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定列的增减 删除操作 使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 Laravel...也可以使用命名绑定,推荐使用这种方式,更加清晰一些 $results = DB::select('select * from users where id = :id', ['id' => 1]); 数据取得所有的数据列...('email'); 数据中分块查找数据列 该方法用于数据中有大量的数据的操作,每次结果集中取出一部分,使用闭包函数进行处理,然后再处理下一部分,该命令一般用于Artisan命令行程序处理大量数据...数据查询某一列的列表 比如我们希望查询出角色中所有的title字段值 $titles = DB::table('roles')->pluck('title'); foreach ($titles

6.3K30

3分钟短文:Laravel 软删除说到模型作用域的概念

我们软删除的使用,再顺便说一说模型内的作用域的概念。 代码时间 常规的删除操作分两步进行,一步是把数据数据查询出来,使用laravel模型的方法, 则返回的是一个模型对象。...所以引入了软删除的概念,就是内添加一个字段,用于标记,这一行条目是否算是删除状态。laravel, 这个软删除字段默认是 deleted_at。你也可以模型手动指定。...然后模型,引入软删除的功能,将其进行全局生效的使用。...大家注意, 想我们的常规操作一样,就是获取一个时间戳$time, 然后把字段赋值: $this->deleted_at = $time; 最后使用update方法更新模型,并修改数据库条目。...写在最后 本文laravel模型的写操作删除动作,讲到了软删除的概念。进而引申出来本地作用域和全局作用域的使用。软删除几乎贯穿了我们应用的始终,需要大家勤学苦练。

1.3K30

laravel框架模型和数据库基础操作实例详解

本文实例讲述了laravel框架模型和数据库基础操作。...()条件查询 $student=DB::table("vipinfo")- where('vip_ID',' =',2)- get(); //一个条件 $student=DB::table("vipinfo...vipinfo")- chunk(2,function($students){ //每次查2条 var_dump($students); if(.......) return false; //满足某个条件使用...每个数据都有一个与之对应的模型,用于数据交互。 建立模型,app目录下建立一个Student模型,即Student.php,不需要带任何后缀。 <?...新增数据、自定义时间戳、批量赋值 (1)使用save方法新增 laravel会默认维护created_at,updated_at 两个字段,这两个字段都是存储时间戳,整型11位的,因此使用时需要在数据库添加这两个字段

2.8K20

Laravel系列4.2】查询构造器

delete() 方法用于删除数据,它可以直接指定一个数据的主键 ID ,同时它也可以使用 where() 条件的方式删除,大家可以自己尝试一下。...最后,我们还有一个获取单个数据的方法 find() ,它和 delete() 很类似,只需要一个主键 ID 就可以了。...我们又发现了一个设计模式 Laravel 框架的应用,意外不意外,惊喜不惊喜! 连查询 普通的连查询的使用还是非常简单的,我也就不多说了,下面的代码也有演示。...`sex` }); 代码第一段的连查询就是最普通的一个外键的查询,如果要实现多个外键连的话,就需要使用第二种方法。...order by `id` desc limit 10 offset 0 另外还有就是我们 SQL 语句中只看得到原始语句,也就是 name 这个 where 条件使用 ?

16.8K10

Laravel5.7 Eloquent ORM快速入门详解

时间戳 默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据,如果你不想要这些 Laravel 自动管理的数据列,模型类设置 $timestamps...* * @var string */ protected $connection = 'connection-name'; } 获取模型 创建完模型及其关联的数据后,就可以数据获取数据了...'bar')- cursor() as $flight) { // } 获取单个模型/聚合结果 当然,除了给定获取所有记录之外,还可以使用 find 和 first 获取单个记录。...Laravel 自带的软删除功能就使用了全局作用域来数据拉出所有没有被删除的模型。编写自定义的全局作用域可以提供一种方便的、简单的方式来确保给定模型的每个查询都有特定的条件约束。...需要的话可以 apply 方法添加 where 条件到查询: <?

15K41

CVE-2021-39165: 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

我们可以通过传入两个参数key和value,来构造一个WHERE条件: DB::table('dual')->where('id', 1); // 生成的WHERE条件是:WHERE id = 1 如果传入的是三个参数...,则第二个参数会认为是条件表达式的符号,比如: DB::table('dual')->where('id', '>', 18); // 生成的WHERE条件是:WHERE id > 18 当然where...', 'LIKE', '%example%'] ]); // 生成的WHERE条件是:WHERE id > 18 AND title LIKE '%example%' 那么,思考下面三个代码Laravel...且Laravel不支持堆叠注入,那么要利用这个漏洞,就有两种方式: 通过UNION SELECT注入直接获取数据 通过BOOL盲注获取数据 UNION肯定是最理想的,但是这里无法使用,原因是用户的这个输入会经过两次字段数量不同的...解决这个问题的方法还是回归到代码审计,Cachet获取用户输入是使用graham-campbell/binput,我在前面审计的时候发现其获取输入的基础上会做一次过滤: public function

69420

通过 Laravel 查询构建器实现简单的增删改查操作

通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据,填充好了数据,接下来,就是 Laravel 应用实现对数据库的增删改查了。...Laravel ,我们不推荐这么做,因为这些对数据结构的操作可以通过数据库迁移功能来实现,而且那样做的话可维护性更好。...使用查询构建器进行增删改查 接下来,我们开始介绍 Laravel 数据库功能的核心组件 —— 查询构建器(说是核心,是因为 Eloquent 模型的底层也是基于这个查询构建器),日常开发,我们与数据库的交互基本都是直接或间接通过它来完成的...,无需手动设置参数绑定来规避 SQL 注入攻击,因为 Laravel 底层会帮助我们自动实现参数绑定,所以推荐使用查询构建器进行数据库操作。...更新记录 更新数据库记录通过 update 方法来完成,我们可以该方法传入待修改字段及对应修改值数组: $id = 11; $affectedRows = DB::table('users')->where

4.1K20

通过 Laravel Eloquent 模型实现简单增删改查操作

模型类定义 使用模型类之前,需要在数据库有对应的数据,因为模型类就是数据面向对象编程语言中的映射。...created_at 和 updated_at 字段(迁移类 table->timestamps() 会生成这两个字段),并且保存模型类时会自动维护这两个字段。...属性为模型类指定使用哪个连接: protected $connection = 'connection_name'; 查询数据 日常开发,大部分操作都是数据查询数据,Eloquent 模型了为我们提供了很多方法帮助我们数据获取数据...获取单条记录 当然,你也可以通过查询构建器的方式模型类查询获取单条记录: $user = User::where('name', '学院君')->first(); 返回的结果是一个模型类实例: ?...此外,Eloquent 还为我们提供了一些快捷的插入方法,比如 firstOrCreate 和 firstOrNew,这两个方法都会先尝试通过指定查询条件数据查找对应记录,如果没有找到的话,会创建对应模型类的实例

7.9K20

3分钟短文:Laravel 模型查询数据库的几个关键方法

引言 本期继续我们的laravel学习,主要说一说laravel使用eloquent orm 模型 读取数据库条目的几个常用方法。 ?...因为设计的原因,laravel支持的链式操作 本质上方法的返回值归属于不同的类。所以使用方法之前务必明确调用的是哪个类的那个方法,返回的是什么类型的数据。...学习时间 让我们最简单的例子开始,就是获取数据内所有的条目,返回一个集合。...所以我们推荐使用where语句进行数据库SQL操作,将合适的结果集返回,这样精简了数据库负载, 再者,使用集合的操作方法,对结果集进行进一步的格式化,效率会高的多。...写在最后 本文主要讲了数据库查询相关的内容,包括获取全量数据获取单条数据, 分块拉取数据,以及聚合函数等,这些常规操作集合上期讲的查询约束项, 基本上可以涵盖编程的大多数需求了。

2.1K40

PHP-Laravel(DB类操作数据库)

四、DB类操作数据库(重点) 按照MVC 的架构,对数据的操作应该放在 Model 完成,但如果不使用Model,我们也可以用 laravel框架提供的 DB 类操作数据库。...laravel DB 类的基本用法DB::table(‘tableName’) 获取操作tableName的实例(对象)。...(2)数据laravel框架的配置 .env文件里面, ? 也可以config目录下面的database.php文件里面配置。...2、增加信息(insert) 对数据的某个增加数据主要有两个函数可以实现,分别是insert()和insertGetId() insert(数组)可以同时添加一条或多条,返回值是布尔类型。...语法:DB::table(‘名’) -> insert(); 连贯操作/链式操作 案例:分别使用两个函数往数据插入几条记录 ?

3.7K20

Laravel基础二之Migrations和验证

每个迁移文件的名称都包含了一个时间戳,以便让 Laravel 确认迁移的顺序。 --table 和 --create 选项可用来指定数据的名称,或是该迁移被执行时是否将创建的新数据。...1.2 迁移结构 迁移类通常会包含两个方法:up 和 down。up 方法可为数据库添加新的数据、字段或索引,而 down 方法则是 up 方法的逆操作。...可以在这两个方法中使用 Laravel 数据库结构生成器来创建以及修改数据。...1.5.3 调用其他 Seeders DatabaseSeeder 类,你可以使用 call 方法来运行其他的 seed 类。 /** * Run the database seeds...::table("名")->where(条件)->get(); 2.模型与数据的绑定 创建Model类型,方法里面声明两个受保护属性:$table(名)和$primaryKey(主键) <?

1.6K30

Laravel源码分析之模型关联

使用模型关联给应用开发带来的收益我认为有以下几点 主体数据和关联数据之间的关系代码表现上更明显易懂让人一眼就能明白数据间的关系。...使用模型关联预加载后,效率上高于开发者自己写join和子查询,模型关联底层是通过分别查询主体和关联数据再将它们关联匹配到一起。...、关联的模型、父模型中间的外键名、关联模型中间的外键名、父模型的主键、关联模型的主键、关联关系名称。...(....) } ]; 这样通过Model 的 get方法获取模型时会预加载的关联模型,获取关联模型时给关系应用约束的 addEagerConstraints方法是具体的关联类定义的,我们可以看下...模型关联常用的一些功能的底层实现到这里梳理完了,Laravel把我们平常用的join, where in 和子查询都隐藏在了底层实现并且帮我们把相互关联的数据做好了匹配。

9.5K10

Laravel系列4.3】模型Eloquent ORM的使用(一)

对于 Laravel 中标准的 Eloquent 模型类来说,每个都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据的创建时间和修改时间...其实所有的最好都有这两个字段,而且很多后台管理系统还需要有 创建人 和 修改人 的记录。它们的目的都是为了数据的安全和记录可追溯。...如果你的中有这两个字段的话,那么 Model 操作的过程,你可以忽略这两个字段的操作,Model 系统会自动设置它们。...这样做的原因也正是为了保持数据的一致性和完整性。 当然, Laravel ,可以不在数据库层面进行严格的设置,就可以框架代码实现主外键的关联。...这个 query 的 where 条件是什么意思?就是我们上面这条 SQL 语句的查询条件。它就是去查询 db_sex 表里面的数据,然后把获得的结果对象返回回来。至于这个 ?

8.8K20
领券