zoukankan      html  css  js  c++  java
  • Laravel模型的一些小技巧

    隐藏字段

    我在项目遇到的情景是,当使用关联模型获取数据的时候,比如产品模型和图片模型,通过产品模型来关联图片模型,这个时候我只需要图片模型的图片地址字段,其他的字段不让产品模型看到;以这个场景为实例,我们通过代码实现

    我们发现上图红色框里的内容,你不想显示其他字段,就在hidden数组里填写目标字段,这样写的一个弊端,其他模型在调用图片模型的时候,这些字段也不会显示,他是全局的。

    构建读取器

    我们为什么要创建读取器?我们在我们正常的业务中,比如要修改我们读取字段数据,我们传统的做法是将数据获取出来,在对数据进行修改。现在有了读取器我们没有必要这样做,我们在业务逻辑里面只针对数据,不去处理数据。laravel给我们提供了方便

    由上图红色的框里的内容所示,比如我们修改图片的路径,图片路径的字段img_url,这个时候构造器函数的声明是getImgUrlAttribute,注意后面必须跟Attribute这是laravel的规定,函数里面的$value就是当前字段的值,你就可以对值进行修改。还有就是我们也可以其他字段值来动态修改当前字段的值

    当from的字段为1的时后我们这才修改图片的路径,注意:这些字段和值的来源是,当我们调用模型的时候,模型会自动将我们数据表的字段和值获取出来,构造器修改字段的值也是全局的,在任何一个关联模型都可以用。

    关联模型可以对所关联模型的值进行改变

    这句话可能听起来有点绕,我来解释一下。我通过一个场景进行解释,比如我们经常看到的商品详情,它里面介绍大多数以图片的形式展示,这些图片再添加的时候是随便传的,这个时候图片后面有一个排序字段,如果你不按照排序字段进行排序,你所获取的图片是乱的,介绍都是乱的。这个时候我们通过关联模型将图片模型的数据进行排序组装,按照我们想要的格式返回。

    laravel将关联模型的数据拼接到当前模型数据的后面是通过with函数,with可以接收一个数组,数组里面的就是关联模型的函数,比如一对一关联函数,我们可以通过‘.’的方式来获取关联模型他所关联的模型,

    也就是这样获取,我们要改变模型里面的值,我们就要在with函数里面写一个匿名函数来处理模型的数据,查询构造器

  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/meichao/p/9142451.html
Copyright © 2011-2022 走看看