`
xieye
  • 浏览: 834832 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

laravel 中利用模型关联关系查询数据注意要点

    博客分类:
  • PHP
阅读更多
laravel中,可以利用关联关系查找数据库的数据。

假设模型有产品,订单。一个产品会有多个订单。

class OrderNo extends Model
{
    /**
     * 获取关联
     */
    public function product()
    {
        return $this->belongsTo('App\Models\Product',  'category', 'id');

    }
}

class Product extends Model
{
   // 一个产品有多个订单。
    public function orders(){
        return $this->hasMany('App\Models\OrderNo','category','id');
    }
}


现在我要查询产品id为2 的订单里id大于10的订单
以下有3种方式。
$list1 = Product::find( 2 )->orders()->where( 'id', '>', 10 )->get();
$list2 = OrderNo::query()->where( "category", 2 )->where( 'id', '>', 10 )->get();
$list3 = Product::find( 2 )->orders->where( 'id', '>', 10 );


这里的重点是第3句,实际的sql语句如下:
SELECT * FROM `order_no` WHERE `order_no`.`category` = '2' and `order_no`.`category` IS not NULL

也就是框架先查出所有的订单放到内存,然后在内存中筛选出id大于10的数据。
这当然是非常不好的!

所以建议使用第一种,和第二种的方法。

0
0
分享到:
评论

相关推荐

    Laravel 模型关联基础教程详解

    在Laravel框架中,模型关联是Eloquent ORM(对象关系映射)的核心部分,允许在数据库中的表...通过不断的实践和案例分析,开发者能够深入掌握Laravel模型关联的强大功能,从而在实际开发中高效地实现复杂的业务逻辑。

    Laravel关联模型中过滤结果为空的结果集(has和with区别)

    在Laravel框架中,关联模型(Eloquent ORM)提供了便捷的方式来处理数据库中的多表关联查询。在处理关联数据时,`with()` 和 `has()` 方法是两种常用的预加载关联数据的方式,它们在处理关联结果为空的情况时有不同...

    Laravel等框架模型关联的可用性浅析

    在Laravel等现代Web开发框架中,模型关联是数据库操作的核心功能之一,它极大地简化了数据的处理,尤其是在处理多表关联的时候。模型关联允许开发者以面向对象的方式处理数据库关系,提高了代码的可读性和效率。然而...

    Laravel 实现关系模型取出需要的字段

    本篇文章将深入探讨如何在Laravel中通过关系模型取出特定字段,避免获取不必要的数据。 首先,我们来看给定的代码片段: ```php public function readOrganization($id) { $list = Organization::with(['...

    Laravel关系模型指定条件查询方法

    Laravel框架中,关系模型是处理数据关联的重要方式,尤其是涉及到一对多、多对多等复杂关联关系时。在数据检索过程中,我们常常需要根据特定条件筛选关联数据,以获得符合特定业务需求的结果集。本文将详细介绍...

    Laravel开发-laravel-datasets

    `laravel-datasets`允许开发者为数据集创建对应的模型,这样可以利用Laravel的Eloquent ORM(对象关系映射)来操作数据。这不仅使得数据操作更加直观,而且还能利用Eloquent的特性,如关联、填充、验证等。 3. **...

    JavaScript中的简单轻量级和可定制的Laravel模型

    在JavaScript的世界里,Laravel模型通常指的是用于模拟Laravel框架中的Eloquent ORM(对象关系映射)的库。Eloquent是PHP的Laravel框架中一个强大的数据库查询构建器,允许开发者以面向对象的方式操作数据库。在...

    Laravel开发-laravel-lazy-mysql

    默认情况下,当我们在模型中访问关联属性时,Laravel会立即执行相关的数据库查询,这可能导致不必要的性能开销。特别是在处理大量数据或复杂关联时,这种即时加载可能会导致大量的数据库查询,从而影响应用的响应...

    laravel 5.1中文文档 和 laravel4.2中文文档

    5. **Eloquent ORM**:尽管相比5.1有所简化,Eloquent在4.2中仍能方便地处理数据库操作,支持关系映射、查询构造器等功能。 6. **路由与控制器**:4.2版本的路由和控制器设计与5.1类似,可以方便地定义HTTP路由,并...

    Laravel开发-laravel-doctrine

    在 Laravel 开发中,ORM(对象关系映射)是一种重要的工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需关注底层的 SQL 查询语言。`laravel-doctrine` 是一个为 Laravel 框架集成 Doctrine ORM 的扩展...

    Laravel开发-laravel-meta

    Laravel Meta库是为了简化在Laravel应用中处理模型关联的额外信息而设计的。通常,这些额外信息不直接与数据库中的字段对应,但它们对于业务逻辑或前端展示非常关键。例如,这可能包括SEO元标签、自定义用户角色权限...

    Laravel开发-laravel-activity

    首先,我们要了解Laravel中的Eloquent ORM(对象关系映射),这是Laravel用于数据库交互的主要工具。Eloquent允许开发者用面向对象的方式来操作数据库表,简化了数据库操作的复杂性。`laravel-activity`项目就是建立...

    Laravel开发-hierarchy

    在Laravel中,多态关联允许一个模型属于多个其他模型。例如,一个评论模型可以属于文章模型,也可以属于视频模型。这种关联提高了代码的灵活性,使得我们可以用一套通用的逻辑处理不同类型的关联模型。 在“Laravel...

    laravel model模型处理之修改查询或修改字段时的类型格式案例

    本文将详细解析如何在Laravel模型中处理查询或修改字段时的类型格式,以便更好地理解和应用。 首先,让我们看一个具体案例。在`User`模型中,我们想要添加一个虚拟属性`is_admin`,它并不是数据库表中的实际列,但...

    Laravel开发-laravel-model-generator

    `laravel-model-generator`是一个实用工具,可以帮助开发者自动生成Laravel模型,从而提高开发效率。下面将详细探讨这个工具以及Laravel中的模型开发。 ### Laravel 模型 (Model) 在Laravel中,模型代表数据库中的...

    Laravel开发-laravel-auditing

    如果你的模型之间有关系,`laravel-auditing` 可以处理这些关系并记录关联模型的变更。通过在模型中使用 `auditWith()` 方法,可以指定要包含的关联模型。 ### 版本回滚 `laravel-auditing` 还提供了版本回滚的...

    Laravel开发-jsonmapper-model-generator

    "Laravel开发-jsonmapper-model-generator"是一个工具,它与netresearch/jsonmapper库结合,帮助开发者自动生成适用于JSON数据映射的Laravel模型类。这个工具极大地简化了处理JSON数据的工作流程,提升了开发效率。 ...

Global site tag (gtag.js) - Google Analytics