laravel Model::updateOrCreate对数据更新操作

6人阅读 评论(0) 收藏 举报
分类:

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" onclick="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 Model数据操作

Laravel DEM数据操作 1.    创建对应的model a)    Php artisan make:make 名字+Model b)   直接在文件夹下面创建model类  ...
  • qq_33808550
  • qq_33808550
  • 2016年11月26日 17:27
  • 3080

Laravel(5.4版本)的基本增删改查操作

1.数据库配置; 2.路由配置,'namespace' => '\KeekoSmallGame'此命名空间对应的路径为App\Http\Controllers\KeekoSmallGame,Rou...
  • u013351340
  • u013351340
  • 2017年05月11日 16:30
  • 1410

laravel 5.3 model的操作以及数据库迁移

随着网络的发展 PHP框架也在逐步更新 让我们一起来学一下laravel5.3框架吧 一  、 C层  c层的位置没有变化 依旧在app/http/controllers下来填充 二   、 M...
  • Sunny_LG
  • Sunny_LG
  • 2016年11月30日 16:33
  • 1006

laravel链式操作

2.2删 $deleted = DB::delete('delete from users'); 返回值:删除的行数将会被返回 2.3改-> $affected...
  • dacall
  • dacall
  • 2017年12月25日 19:11
  • 133

laravel model层建立(以及控制器调用)

我们编程一般都是采用mvc的形式,这个想法对我们来说根深蒂固,当我们了解lavarel框架的时候已经被它优雅的编程所折服,那么刚开始我们都会有疑问laravel的model层文件去哪里了,当我们使用P...
  • woshihaiyong168
  • woshihaiyong168
  • 2016年11月19日 11:49
  • 9062

laravel框架中使用model层

创建model:php artisan make:model privilegeModel(名字随便写,可以不加Model) 控制器层加载model namespace App\Http\C...
  • shenpengchao
  • shenpengchao
  • 2016年07月07日 19:23
  • 10411

laravel 生成model

在Laravel中数据库表都是根据Laravel中写好的程序去生成的,这样的话便于使用git等版本控制进行管理整个项目。 以建立User_address模型为例进行记录: 1、使用php ar...
  • wepe12
  • wepe12
  • 2017年05月05日 10:15
  • 8343

Django+xadmin开发笔记(三) Django通过model去操作数据库

(一)传统的操作数据一般就是1,连接数据库2,创建执行器3,用执行器去执行SQL查询语句,刚需操纵查来的数据,然后关闭数据库。(二)通过ORM技术,可以让操纵数据库类方法调用一样简单。model.py...
  • sinat_36690884
  • sinat_36690884
  • 2018年03月01日 16:33
  • 77

Laravel基础篇学习笔记(二):数据库操作

1)DB facade(原始查找)2)查询构造器3)Eloquent ORM
  • Naught00
  • Naught00
  • 2017年02月07日 11:57
  • 1306

laravel firstOrCreate后判断是否新增

$user = User::firstOrCreate($userData); if($user->wasRecentlyCreated){ // 新用户处理 }
  • tianlebest
  • tianlebest
  • 2017年02月23日 02:48
  • 986
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 1135
    排名: 4万+
    最新评论