精华内容
下载资源
问答
  • laravel model中更新数据
    2021-04-29 08:32:50

    Laravel model常用方法(持续更新中)

    那随意了 • 2019 年 12 月 17 日

    Laravel model常用方法

    增Classes::create($request->all());

    删Classes::findOrFail($id)->delete();

    关联删除

    classes.php<?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Classes extends Model

    {

    //

    protected $fillable = [

    'name','department','open',

    ];

    public function courses(){

    return $this->hasMany('App\Courses');

    }

    }

    Courses.php<?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Courses extends Model

    {

    //

    public function classes(){

    return $this->belongsTo('App\Classes');

    }

    }

    之后执行Classes::findOrFail($id)->courses()->delete();//先删除关联之下的课程字段

    Classes::findOrFail($id)->delete();//然后删除班级

    改$classes=Classes::FindOrFail($id);

    $classes->name=$request->name;

    $classes->department=$request->department;

    $classes->save();

    查$classes=Classes::FindOrFail($id);

    //个人推荐使用FindOrFail,因为在查询是做关联查询,如果使用findOrFail会报404,而使用find会报空指针异常

    //或

    $classes=Classes::find($id);

    //有时你希望在未找到模型时抛出异常。这在控制器和路由中非常有用。 findOrFail 和 firstOrFail 方法会检索查询的第一个结果,如果未找到,将抛出 Illuminate\Database\Eloquent\ModelNotFoundException 异常:。

    如果没有捕获异常,则会自动返回 404 响应给用户。也就是说,使用这些方法时,没有必要再写个检查来返回 404 响应:

    //查询第一条数据

    $open=Classes::where('open',1)->first();

    关联查询$classes=Classes::find($id);//先获取对象的实例

    $courses=$classes->courses()->get();//查询对应的实例

    相关阅读

    laravel框架中的Model操作数据库 , 相比DB类有什么明显的优越性吗?

    更多相关内容
  • 主要介绍了在LaravelModel层做数据缓存的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 该软件包提供了一种从laravel模型检索有用的元数据的简单方法 在psr-4目录结构查找所有模型 从数据库检索所有列和元数据 检索索引元数据 使用元数据生成基本验证规则 模型类型提示已删除,可以使用 安装 如果您...
  • 近期在刷新生产环境数据库的时候,需要更新的字段,如果对每条数据结果都执行一次update语句,占用的数据库资源就会很多,而且速度慢。 因为项目是Laravel框架,Laravel有批量插入的方法,却没有批量更新的方法...
  • 创建model:php artisan make:model privilegeModel(名字随便写,可以不加Model) 控制器层加载model <?... //注意命名空间 ... use app\privilegeModel;... $model=new \App\PrivilegeModel();... //调用model方法
  • Laravel 数据库Model学习

    2022-04-19 09:03:55
    如果需要关联的数据表的名称,不是model文件的复数,比如:model文件:member 表名:(members)、model文件:user 表名:(users); 上面这种情况的话,在model文件内设置关联的表名: protec

    注意:对数据的操作时,需要查看自己嗯.env文件里的默认数据库是否跟改为需要操作的目标数据库

    一、创建model模型文件:

    php artisan make:model Home/Member
    创建后的文件会放在app目录下的Models目录下

    二、model文件关联数据库表:

    如果需要关联的数据表的名称,不是model文件的复数,比如:model文件:member 表名:(members)、model文件:user 表名:(users);
    上面这种情况的话,在model文件内设置关联的表名:
    protected $table = 'member' //设置model文件关联member表

    三、model文件的主键名:

    默认的主键名是id字段,并且为整型自增;
    如果表中的主键名不是id字段的话,就需要自己通过对应的属性设置:

    	//设置主键默认字段
        protected $primaryKey = 'id_cord';
        // 设置主键的字段类型
        protected $keyType = 'String';
        // 设置主键是否自增
        public $incrementing = 'false';
    

    四、时间字段:

    默认情况下,model里面默认有created_at(数据创建时间)和updated_at(数据更新时间),如果不想要自动管理这两列,可以设置$timestamps属性为false
    public $timestamps = false;
    如果数据表中的创建时间字段和更新字段不是model默认的话可以对名字重新定义:

        const CREATED_AT = 'create_time';
        const UPDATED_AT = 'modify_time';
    
    展开全文
  • Model类的增删改查: 查: use App\Http\Controllers\Controller; use App\Models\Home\Member; class Controllers extends Controller { //查询记录 public function select(){ // 查询所有记录只有name字段 ...

    Model类的增删改查:

    查:
    
    use App\Http\Controllers\Controller;
    use App\Models\Home\Member;
    
    class Controllers extends Controller
    {
        //查询记录
        public function select(){
            // 查询所有记录只有name字段
            $data = Member::all(['name']);
            // 打印查询信息
            dump($data);
            // 查询age大于18岁的记录
            $data = Member::where('age','>','18')->get();
            // 打印查询结果
            dump($data);
        }
    }
    

    查询后的结果为:
    在这里插入图片描述
    查询后,返回的是一个model模型类。

    每条记录是放在: attributes中:
    在这里插入图片描述
    发现original里面的数据和attributes里面的数据是一样的:
    original:数据库原始数据;
    attributes:后台操作后更改后的数据;

    遍历查询后的数据:
    
    use App\Http\Controllers\Controller;
    use App\Models\Home\Member;
    
    class Controllers extends Controller
    {
        //查询记录
        public function select(){
            // 查询所有记录只有name字段
            $data = Member::all(['name']);
            // 打印查询信息
            // dump($data);
            // 遍历查询记录
            foreach ($data as $v){
                // 可以直接访问对应的属性名
                echo $v->name.' ';
            }
            // 查询age大于18岁的记录
            $data = Member::where('age','>','18')->get();
            // toArray()将数据转换为数组
            $data02 = Member::where('age','>','18')->get()->toArray();
            // 打印查询结果
            // dump($data);
            dump($data02);
        }
    }
    

    访问结果为:
    在这里插入图片描述
    检索单条记录:find、first、firstWhere方法来检索单条数据记录,返回单个模型实例而不是模型集合。
    查询年龄在18以上的第一条人员信息:
    return Member::firstWhere(''age' ,'>',18); //返回满足条件的第一条记录
    find:查询已知记录的主键:
    Member::find(13);
    在这里插入图片描述

    增:
    1. new 一个model的实例对象:
     //新增
        public function insert(){
            // 实例操作
            // 对象记录对应,操作对象就是数据表的记录
            $member = new Member();
            // 数据是空的model实例
            dump($member);
            // 对成员属性赋值就是对数据表字段新增值
            $member->name = 'yy';
            $member->age = 20;
            $member->email = 'xiaoyu@qq.com';
            // 对数据进行save保存
            dump($member)
            $member->save();
            //save之后返回保存成功返回:true,失败返回false
        }
    

    在这里插入图片描述
    添加之后:后面的modelattibutes多了三个数据;
    数据库中,如果有created_atupdated_at字段model会默认管理这两个字段
    在这里插入图片描述

    批量赋值:
    // 通过批量新增
            //create方法
            $data = [
                'name' => 'xiaohu',
                'age' => 22,
                'email' => 'xiaohu@163.com'
            ];
            dump(Member::create($data));
    

    还需要去model文件里面设置 $fillable允许批量赋值的字段名称:
    protected $fillable=['name','age','email'];
    禁止批量赋值的字段名称
    protected $guarded = ['is_admin'];

    改:

    单记录更新:

    //  通过实例化方法进行修改修改(对id为13的记录,修改is_admin的值为2)
    		//获得一条记录为实例
            $data = Member::find(13);
            $data->is_admin = 2;
            dump($data->save());
            // 修改大于11的记录的admin为2
            $data = Member::where('id','>',11)->get();
            foreach ($data as $v){ //遍历记录对象
                $v->is_admin = 2;
                // 修改一条就需要对他进行保存
                $v->save();
            }
            dump($data);
    

    在这里插入图片描述

    批量修改记录:
    // 批量修改
    		// 定义一个修改值的数组
            $data = ['is_admin'=>1];
            // 对id小于11的is_admin进行修改为1
            $rest = Member::where('id','<',11)->update($data);
            // 返回更新行数
            dump($rest);
    
    删:

    只会默认运行第一条删除命令

        public function delete(){
            // 根据id的值查询并且对查询后的记录进行删除
            $rest = Member::find(9) -> delete();
            // 返回值为:true和false
            dd($rest);
            // 批量删除id为【10,13,9】的记录,返回删除的记录行数
            dd(Member::destroy([10,13,9]));
            // 对查询后的结果进行删除,返回值是删除的记录行数
            dd(Member::where('age','>',66)->delete());
        }
    
    展开全文
  • laravel model 模型详细基本用法

    千次阅读 2020-04-22 15:54:09
    laravel model 模型基本用法 一.定义模型 1.命令 php artisan make:model User 如果你想要在生成模型时生成数据库迁移,可以使用--migration 或-m 选项: php artisan make:model User --migration或-m 2....

    laravel model 模型基本用法


    一.定义模型

    1.命令

    php artisan make:model User

    如果你想要在生成模型时生成数据库迁移,可以使用--migration 或-m 选项:

    php artisan make:model User --migration或-m

    2.Eloquent使用的表名

    默认规则是模型类名的复数作为与其对应的表名,除非在模型类中明确指定了其它名称,在model中定义

    $table = 'my_flights';

    3.主键

    Eloquent 默认每张表的主键名为id ,你可以在模型类中定义一个$primaryKey 属性来覆盖该约定
     

    4.时间戳

    默认情况下,Eloquent 期望created_at 和updated_at 已经存在于数据表中,如果你不想要这些 Laravel自动管理的列,在模型类中设置$timestamps 属性为false
     
    如果你需要自定义时间戳格式,设置模型中的$dateFormat 属性,该属性决定日期被如何存储到数据库中,以及模型被序列化为数组或 JSON 时日期的格式
     

    二.常用方法

    1.获取所有记录

    $flights = Flight::all();

    2.访问列值

    $flight->name;

    3.每一个 Eloquent 模型都是一个查询构建器,所以适用于数据库操作中查询的所有方法

    如:

    $flights = App\Flight::where('active', 1)
    ->orderBy('name', 'desc')
    ->take(10)
    ->get();

     

    三.集合

    组块结果集

    如果你需要处理成千上万个 Eloquent 结果,可以使用chunk 命令。chunk 方法会获取一个“组块”的 Eloquent 模型,并将其填充到给定闭包进行处理。使用chunk 方法能够在处理大量数据集合时有效减少内存消耗:

    Flight::chunk(200, function ($flights) {
        foreach ($flights as $flight) {
            //
        }
    });

     

    四.单条记录/聚合结果

    1.单条记录

    // 通过主键获取模型...

    $flight = App\Flight::find(1);

    // 获取匹配查询条件的第一个模型...

    $flight = App\Flight::where('active', 1)->first();

    firstOrFail/firstOrFail //如果记录没找到,返回404错误 

    2.聚合结果

    $count = App\Flight::where('active', 1)->count();
    $max = App\Flight::where('active', 1)->max('price');


    五.插入/更新记录

    1.基本插入

    $flight = new Flight;
    $flight->name = $request->name;
    $flight->save();

    2.基本更新

    $flight = App\Flight::find(1);
    $flight->name = 'New Flight Name';
    $flight->save();

    3.批量赋值

    批量赋值,需要在模型中指定$fillable或guarded属性,前者表示那些字段能被赋值,后者表示那些字段不能被赋值
     

    class Flight extends Model{
        /**
        * 不能被批量赋值的属性
        *
        * @var array
        */
        protected $guarded = ['price'];
     
    }

    使用create 方法在数据库中插入一条新的记录,create 方法返回保存后的模型实例

    $flight = App\Flight::create(['name' => 'Flight 10']);

    4.firstOrCreate/firstOrNew

    firstOrCreate 方法先尝试通过给定列/值对在数据库中查找记录,如果没有找到的话则通过给定属性创建一个新的记录
    firstOrNew 方法和firstOrCreate 方法一样先尝试在数据库中查找匹配的记录,如果没有找到,则返回一个的模型实例。注意通过firstOrNew 方法返回的模型实例并没有持久化到数据库中,你还需要调用save 方法手动持久化
     
    // 通过属性获取航班, 如果不存在则创建...

    $flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);

    // 通过属性获取航班, 如果不存在初始化一个新的实例...
    $flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);

    $flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);

     

    六.删除模型

    1.通过主键删除

    App\Flight::destroy(1);
    App\Flight::destroy([1, 2, 3]);
    App\Flight::destroy(1, 2, 3);

    2.where删除

    $deletedRows = App\Flight::where('active', 0)->delete();

    3.软删除

    如删除是,如果数据表有deleted_at字段,如果该字段为非空,那么该模型就表示已经被软删除了.
     
    在模型中启用软删除

    class Flight extends Model{
        use SoftDeletes;
    }

    这样在调用delete时,将会启用软删除
     
    4.判断模型是否被软删除

    if ($flight->trashed()){....}

    5.软删除的记录,在使用模型查询时将会自动从查询结果中排除掉,如果要包含软删除的记录

    $flights = App\Flight::withTrashed()->where('account_id', 1)->get();
    $flight->history()->withTrashed()->get()

    6.只获取软删除的记录

    $flights = App\Flight::onlyTrashed()->where('airline_id', 1)->get();

     7.恢复软删除记录

    $flight->restore();
    App\Flight::withTrashed()->where('airline_id', 1)->restore();
    $flight->history()->restore();


    8.彻底从数据库中删除

    // 强制删除单个模型实例...

    $flight->forceDelete();

    // 强制删除所有关联模型...

    $flight->history()->forceDelete();

     

    七.查询作用域

    1.基本

    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

    调用

    $users = App\User::popular()->orderBy('created_at')->get();

    2.动态作用域

    public function scopeOfType($query, $type)
    {
        return $query->where('type', $type);
    }
    $users = App\User::ofType('admin')->get();


     八.事件

    Eloquent 模型可以触发事件,允许你在模型生命周期中的多个时间点调用如下这些方法: creating , created ,updating , updated , saving , saved , deleting , deleted , restoring , restored 。事件允许你在一个指定模型类每次保存或更新的时候执行代码。
     
    一个新模型被首次保存的时候, creating 和created 事件会被触发。如果一个模型已经在数据库中存在并调用save/方法, updating/updated 事件会被触发。 举个例子,我们在服务提供者中定义一个 Eloquent 事件监听器,在事件监听器中,我们会调用给定模型的isValid 方法,如果模型无效会返回false 。如果从 Eloquent 事件监听器中返回false 则取消save/update 操作

    <?php
    namespace App\Providers;
    use App\User;
    use Illuminate\Support\ServiceProvider;
    class AppServiceProvider extends ServiceProvider{
        /**
        * 启动所有应用服务
        *
        * @return void
        */
        public function boot()
        {
            User::creating(function ($user) {
                if ( ! $user->isValid()) {
                return false;
                }
            });
        }
        /**
        * 注册服务提供者.
        *
        * @return void
        */
        public function register()
        {
            //
        }
    }

     

    展开全文
  • 今天小编就为大家分享一篇laravel model模型处理之修改查询或修改字段时的类型格式案例,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧
  • 今天小编就为大家整理了一篇laravel model模型定义实现开启自动管理时间created_at,updated_at,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Laravel根据Model数据复制一条记录

    千次阅读 2019-10-12 10:17:57
    最近需要写个脚本补历史数据,要根据某条记录,复制一条记录,修改一个字段后再插入表,原来想的比较简单,代码这样写: $oldModel = Model::query()->where('id', 123)->first(); $newModel = clone $old...
  • Laravel批量更新多条数据

    万次阅读 2019-09-04 11:01:58
    近期在刷新生产环境数据库的时候,需要更新的字段,如果对每条数据结果都执行一次update语句,占用的数据库资源就会很多,而且速度慢,显得也不高大上。 因为项目是Laravel框架,Laravel有批量插入的方法,却...
  • laravel model 技巧

    2021-10-26 13:50:02
    1、设置默认属性返回值 protected $attributes = [ 'goal_distance' => '100', 'goal_time' => '0', ...通过withDefault()当查询未空时返回上面数据 public function preplan() {
  • laravel-haversine-model (Laravel 4) Laravel 模型位置数据的大圆测量。
  • 0、最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3可行的分表方法,亲测可用。 1、本人公司做的是SaaS系统,以店铺为维度。店铺id(shop_id) 命名规则为: shop+6位随机数字字母+4位数字 。...
  • Model:&lt;?php namespace App\Http\Model; use Illuminate\Database\Eloquent\Model; class Type extends Model { protected $table='type'; protected $primaryKey='tid'; protected $fillable=['t...
  • Laravel Model模型关联

    2022-04-24 08:41:23
    定义关联关系 数据库表通常相互关联。 例如,一篇博客文章可能有许多评论,或者一个订单对应一个下单用户。...其中guest表的主键id字段对应着guestinfo的外键user_id字段 首先创建两个model文件:
  • $product = Product::find(1); $product->view_count += 1; $product->timestamps = false;...重置数据库数据 update products set updated_at = created_at; 转载于:https://www.cnblogs.com/s...
  • 今天小编就为大家分享一篇Laravel ORM 数据model操作教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 1.官方手册是这样介绍的:想要在一个数据库事务运行一连串操作,可以使用DB门面的transaction方法,如果事务闭包抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。使用transaction方法时不需要...
  • laravel模型中数据批量加入

    千次阅读 2022-02-21 10:21:10
    laravel模型中数据批量加入 ** 控制器: //关联新增批量加入 $user = User::find(19); $user->book()->saveMany([ new Book(['title'=>'《哈利波特1》']), new Book(['title'=>'《哈利波特2》']) ...
  • Laravel Model常用属性

    千次阅读 2020-02-01 18:33:36
    $table = ‘应当操作的表名’; $primaryKey= ‘主键’;... $touches = [ ‘模型更新时应当一并更新的关联关系’]; $dispatchesEvents = [ ‘模型事件’=>‘自定义事件’(设置模型事件与自定义事件的映射)];
  • 今天小编就为大家分享一篇关于Laravel-admin的基础用法总结和自定义model详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • laravel的create方法为批量赋值,save方法为逐个手动赋值,因此fillable和guarded对save方法不起作用而用于create方法 需要注意的是,fillable 与 guarded 只限制了 create 方法,而不会限制 save。
  • LaravelAdmin中model排序字段之间比较两个字段的大小比较,把A大于B的查出来可以用 whereRaw('buyprice > productprice') 这种 需求:查出 buyprice > productprice 的数据可以用$grid->model()->whereRaw('...
  • 主要介绍了Laravel框架实现model层的增删改查(CURD)操作,结合实例形式分析了Laravel框架模型model层进行数据库的增删改查操作具体实现技巧,需要的朋友可以参考下
  • 在这篇文章,我会向你提供7个小提示,让每一个使用 Laravel 的人都知道应该如何充分利用你的模型。1 首先,让我们创建模型开始当我们通过命令行创建一个模型时,你可以指定在某个文件夹创建这个模型。...
  • 有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到一行记录后从结果对象获取指定字段的值,但是 Laravel 为我们提供了更便捷的语法: $name = '学院君'; $email = DB

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,988
精华内容 2,795
关键字:

laravel model中更新数据