zoukankan      html  css  js  c++  java
  • 你可能不知道的 Laravel Eloquent 操作

    push
    大概率会碰到的。假设现在用户模型 User 和 微信 Wechat 是一对一关系,然后进行以下操作:
    
    $user = User::where('name', 'wuqinqiang')->first();
    $user->age = 18;
    $user->wechat->nickName = "Remember";
    $user->save()
    那么此时,会保存用户信息,但是并不会保存对应 Wechat 的关联信息,想让它一起保存咋么办?也很简单。把 save 换成 push 即可。
    
    $user->push();
    我不想要模型事件
    我们都知道,在使用 Eloquent 模型的时候,创建或者更新模型这些操作的时候,是有几个阶段的事件的,有时候可能因为业务上的需要,可能会监听某个事件执行某些操作。比如下面这段监听对应事件执行对应操作的代码:
    
        public static function boot()
        {
            parent::boot();
            static::creating(function ($model) {
               //业务逻辑
            });
        }
    那要是不想在操作时触发任何事件则么办?你可以执行一个回调函数而无需触发任何事件:
    
    $user = User::withoutEvents(function () {
    return //保存或者更新代码
    });
    模型是否被动过手脚
    想知道从数据库查询获取出来的模型是否被动过手脚 (修改)? 也有办法。可以使用 isDirty
    
    $ user = User :: where('name','wuqinqiang')->first();
    $ user-> isDirty(); // 还没被动过 返回 false
    $ user-> name ='curry';  
    $ user-> isDirty(); //模型被动过了 返回true 
    $ user-> isDirty('email'); // 可以传入参数  验证某个参数是否被动过,这个我还没碰过 当然 false
    $ user-> isDirty('name'); // true 
    如果你还想具体了解到哪些是被动过了,可以使用:
    
    $user->getDirty();  你将得到一个数组 ["name" => "curry"]
    我想看原始数据
    既然上面提到是否被动过手脚,那动过手脚之后我又想看看之前的模样 (ps: 人就是这样麻烦)。强大的 Laravel Eloquent 也可以办到:
    
    $ user = User :: where('name','wuqinqiang')->first();
    $user->name = 'curry';
    $user->getOriginal(); // 返回数组 "name" => "wuqinqiang"
    $user->getOriginal('name'); //指定要看哪个属性的原值  "wuqinqiang"

    https://learnku.com/articles/39263

    踩过这个坑,还有下一个坑等着你,这一路就是给自己填坑,坑填多了,也就习惯了,直到这一路平坦了,也就无怨无悔了。
  • 相关阅读:
    jQuery源码学习9——DOMReady加载
    jQuery源码学习8——工具方法之init
    jQuery源码学习7——实例成员
    jQuery源码学习6——工具方法之事件系统
    SQL中EXCEPT函数在 Mysql 和 sqlServer 中的替代方法
    关系型数据库及优势
    jsp小基础归纳
    eclipse换了高版本的maven插件后报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project
    开发常用网站收藏
    Struts2
  • 原文地址:https://www.cnblogs.com/xiaofeilin/p/13964289.html
Copyright © 2011-2022 走看看