精华内容
下载资源
问答
  • Laravel Model不检索数据

    2017-01-05 13:59:04
    <p>Im using laravel to pull some log information from a database, but all of a sudden its stopped working, as in its not retrieving data and not returning anything. Im using vuejs to retrieve the data...
  • Laravel Model数据操作

    千次阅读 2016-11-26 17:27:56
    Laravel DEM数据操作 1. 创建对应的model a) Php artisan make:make 名字+Model b) 直接在文件夹下面创建model类   2. 操作方法 a) 使用new关键字创建对象后执行对象方法 b) 直接调用static方法 3...

    Laravel DEM数据操作

    1.    创建对应的model

    a)    Php artisan make:make 名字+Model

    b)   直接在文件夹下面创建model

     

    2.    操作方法

    a)    使用new关键字创建对象后执行对象方法

    b)   直接调用static方法

    3.    常用数据操作

    a)    Find(1) 查询单条数据

    b)   All()    查询所有数据

    c)    Find(1)->delete()  删除单条数据

    d)   Destroy(array(1,2,3)) 删除单条或者多条数据

    e)    Save()  保存数据

    f)     First()  取第一条数据

    g)   Update() 更新数据

    h)   Truncate()  清空数据表

    i)     Get()  配合查询条件获取多条数据

    j)     Pluck 返回表中字段的第一条记录

    k)    Lists() 返回一列数据

    l)     Tosql() 获取查询的sql语句,仅用于条件,不能用带get()之类的查询

     

    条件查询

    1.    Where(‘字段名’,’=’,’限制条件’)

    2.    多条件查询,使用多个where

    3.    或者查询操作orwhere

    4.    其它查询方法

    a)    WhereIn()

    b)   whereNotIn

    c)    whereNull()

    d)   whereNotNull()

    e)    whereBetween()

    f)     whereNested()

    g)   orwhereNested()

    h)   whereUsername(‘Kind’) 查询’username’=king’的数据,默认系统无此方法,username字段名称

    结构排序

    a)    orderBy  默认asc正序 desc倒序

     

    限制结果数量

    Take(数量)方法   // select * from 表名 limit 数量

     

    指定偏移

    Take(数量)->Skip(数字)    //select * from 表名limit 数量 offset 数字

    展开全文
  • laravel-haversine-model (Laravel 4) Laravel 模型位置数据的大圆测量。
  • 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...

    Model:

    <?php
    
    namespace App\Http\Model;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Type extends Model
    {
        protected $table='type';
        protected $primaryKey='tid';
        protected $fillable=['tid','typename'];
        public $timestamps = false;
    }

    为了防止MassAssignmentException错误,需要加上$fillable规定可写字段。

    如果在数据库中没有update_at这个字段,我们不做记录更新时间的操作,就加上$timetamps这个属性。

    定义路由:

    Route::any('typeupdate','IndexController@typeupdate');

    操作方法:

    public function typeupdate(){
            $data=request()->except('_token');
            $rules=[
                'typename'=>'required|max:8|unique:type,typename'
            ];
            $msg=[
                'typename.required'=>'类型名不能为空',
                'typename.max'=>'可输入最大长度为8',
                'typename.unique'=>'该类型名已存在'
            ];
            $validator=Validator::make($data,$rules,$msg);
            if($ss=$validator->fails()) {
                return back()->withErrors($validator);
            }else{
                $result=Type::updateOrCreate(array('tid' => $data['tid']), array('typename' => $data['typename']));
                if ($result) {
                    return redirect('admin/type');
                } else {
                    return back()->with('error', '修改失败');
                }
            }
        }
    利用unique:表明,列明可以判断表中是否已存在该字段,如果我们做更改用户名处理时,要保证用户名的唯一性就可以这样用
    表单校验规则:传送

    如果在修改的时候想传入修改值的原始值可以使用ajax请求(PS:这里是利用弹窗实现):

    先注册路由:

    Route::any('edit','IndexController@edit');
    书写方法controller中:
    public function edit(){
            $tid=Input::get('tid');
            $type=Type::find($tid);
            echo json_encode($type);
    }

    在视图文件中加上js(为下面的弹窗表单填充值):

    <script type="text/javascript">
            function jsedit(tid){
                //从数据库中根据tid获取记录
                $.getJSON(
                    "{{url('admin/edit')}}",{"tid":tid},function(json){
                        $("#tida").val(json.tid);
                        $("#typenamea").val(json.typename);
                        // alert(json.type);
                    });
            }
    </script>
    删除按钮:
    <a href="#" data-toggle="modal" data-target="#update_dialog" οnclick="jsedit({{$v->tid}})"><button type="button" class="btn btn-primary">修改</button></a>
    bootstrap弹窗:
    <div class="modal fade" id="update_dialog" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                        <h4 class="modal-title" id="myModalLabel">修改类型名</h4>
                    </div>
                    <div class="modal-body">
    
                        <form class="form-inline" method="POST" action="{{url('admin/typeupdate')}}" accept-charset="UTF-8">
                            <div class="form-group">
                                <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
                                <input type="hidden" name="tid" id="tida">
                                <label for="exampleInputName2">类型名称</label>
                                <input type="text" class="form-control"  placeholder="类别名称" name="typename" id="typenamea">
                            </div>
                            <div class="modal-footer">
                                <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                                <button type="submit" class="btn btn-default">Submit</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>




    展开全文
  • laravel小白,今天使用laravel-admin更新数据时,虽然提示成功,但是数据库里的数据始终没有变化,已经检查过$fillable,添加了字段,然而还是更新不了数据![图片说明]...
  • setFieldOriginalValue出现问题:在使用 laravel-admin 的时候 使用自带的编辑功能 更新数据 提示更新成功但是数据库数据没有发生变化 遇到这个情况我首先想到的是会不会是model没写好 排查了下$fillable 里面...

     

    setFieldOriginalValue出现问题:在使用 laravel-admin 的时候 使用自带的编辑功能 更新数据 提示更新成功但是数据库中的数据没有发生变化

    遇到这个情况我首先想到的是会不会是model没写好 排查了下 $fillable 里面的值没毛病 

    然后手写了个ORM 更新数据发现 可以正常使用 这里我们排除 model 的问题

    没办法只能 一步一步跟代码排除问题 (这里主要写解决思路和排查过程 有类似问题的朋友可以直接翻到最后)

    这里我是拿出问题的 控制器和之前没出问题的控制器进行比较来排除问题的

    Controller 里面的 form() 这个方法 在edit 时 编辑表单正常显示 功能正常使用没有问题

    然后我开始排查 Encore\Admin\Form 里面的update 方法 在474行 左右

    这里发现两个控制器获取到的值相同 也没有问题 直到

    494行 

    $this->setFieldOriginalValue();时发现

    $this->builder->fields()->each

    这里 each 这个函数是作为遍历使用的 我打印了下$this->builder->fields() 的值

    发现两个已经有区别了

    正常的控制器中 有个 Collection 对象

    而异常的控制器中 什么都没有

    这里我找到 Collection 实在 $this->builder 这个对象被 __construct 时放入的  builder对象是在 form 被 __construct 放入的 这里我在

    form 的 __construct 方法中 打印了一下 发现两个控制器的结果值是相同的 

    然后一步一步排查 发现并没有什么用 然而还是没有找到 Collection 这个对象是在哪被放入的 

    就想起来排查下 HasResourceActions

    vendor\encore\laravel-admin\src\Controllers\HasResourceActions.php

    既然继承的是他的 update 哪问题有很大可能是在这里

     

    这里我们 return $this->form()->update($id);

    看到 form() 找了一下没有找到他里面有form() 这个方法于是 就想到了form() 可能是 所使用控制器中定义的

    form() 方法 毕竟所使用的控制器 也是继承于他的 这个 $this 应该是所使用的控制器

    想到就试一下 断点了一下发现果然还是他 

    这里发现我是在编辑的时候 向 form() 传了两个值

     

    但是在laravel-admin 更新数据时调用是没有传值的

    所以我在这里写的条件判断影响了后面的使用 

    取消条件判断试了下 问题解决 条件判断在想其他办法来做好了 总算是把这个问题解决了

    之前翻了好久手册也没找到相关的说明 或是类似的解决方案

    没找到不能说明手册中没有 有哪位朋友在手册找到相关的说明可以分享下

     

    转载于:https://www.cnblogs.com/y734290209/p/11330319.html

    展开全文
  • 主要介绍了在LaravelModel层做数据缓存的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 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()
        {
            //
        }
    }

     

    展开全文
  • ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大小企业和创业者提供社会化软件研发及技术解决方案。 产生需求在使用 Laravel 开发 ThinkSNS Plus 的时候,因为很多功能块都没有写在一个库里面,利用拓展...
  • $product = Product::find(1); $product->view_count += 1; $product->timestamps = false;...重置数据库数据 update products set updated_at = created_at; 转载于:https://www.cnblogs.com/s...
  • laravel model relationship

    2017-07-31 10:34:31
    laravel支持多种模型之间的relation,对应着模型间的one2one, one2many,many2many,hasManyThrough,Polymorphic, many2many polymorphic关系。 心法 1.所有relation都由model class上的方法来定义; 2. relationship...
  • Laravel Model Builder,这是对将MySQL数据库反向工程为Laravel模型的一种不当尝试。 用法 将以下内容添加到您的composer.json: "require" : { "jimbolino/laravel-model-builder" : "dev-master" } , 添加到...
  • laravel model 模型

    千次阅读 2018-12-05 16:20:19
    &lt;?... namespace Illuminate\Database\... * 1、覆盖: 在继承该类 \Illuminate\Database\Eloquent\Model 的自定义的模型类, 定义一个同名 field,值不一样 */ abstract class Model1 implements Array...
  • 今天小编就为大家分享一篇Laravel ORM 数据model操作教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • laravel Model模型

    千次阅读 2015-07-08 23:14:12
    root@cy-VirtualBox:/var/www/html/laravel5.0# php artisan make:model Article PHP Warning: Module 'PDO' already loaded in Unknown on line 0 PHP Warning: Module 'json' already loaded in Unknown o
  • laravel model 使用

    千次阅读 2018-12-06 09:03:53
    这将在原有的列上添加一列is_admin,这需要通过属性访问时才会获得,如果我们希望在获得数据的时候被一起返回,则还需要append属性 class User extends Model{ protected $appends = ['is_admin']; /** * 为用户获取...
  • Laravel根据Model数据复制一条记录

    千次阅读 2019-10-12 10:17:57
    最近需要写个脚本补历史数据,要根据某条记录,复制一条记录,修改一个字段后再插入表,原来想的比较简单,代码这样写: $oldModel = Model::query()->where('id', 123)->first(); $newModel = clone $old...
  • 每次做权限管理都在郁闷别人后台的相关配置,每一个后台总是有差异需求,但是万变不离其宗,我们还是逃脱不了 常识性的无线分类递归 与 菜单树的限制 ,这里 为自己,他人总结出来了laravel 自己个人常用的两种...
  • Laravel Model设置默认值

    2021-01-24 21:58:31
    Laravel可以在Model设置字段默认值,之后在对Model赋值的时候,如果设置默认值的字段没有被显性赋值,框架就会自动填充默认值,并存入数据库。 protected $attributes = [ 'status' => self::STATUS_UNCONFIRMED, ...
  • class Model1 extends Models{ protected $connection = 'connection_name';//数据库连接 public $timestamps = false;//如果你的数据表里面不包含created_at 和 updated_at字段,或只包含一个,都需设置 $...
  • Laravel Model常用属性

    千次阅读 2020-02-01 18:33:36
    $table = ‘应当操作的表名’; $primaryKey= ‘主键’;... $touches = [ ‘模型更新时应当一并更新的关联关系’]; $dispatchesEvents = [ ‘模型事件’=>‘自定义事件’(设置模型事件与自定义事件的映射)];
  • 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单。 在以面向对象的方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,885
精华内容 2,354
关键字:

laravelmodel中更新数据