【问题标题】:laravel-Auto increment Idlaravel-自动增量ID
【发布时间】:2018-04-11 03:29:42
【问题描述】:

如何获取自动增量 ID?我创建了数据库。它有客户注册表单。客户 ID 是在 DB 中自动生成的。我想用 ID 列的最大值填充 ID 输入字段。例如:

我的源代码(register.blade.php)

@extends('layerout.registration')
@section('content')

<div class="container">
  <div class="row">
  <div class="col-md-4 col-md-offset-4">
    <form action="/insert" method="post">

      <center><font color="white"><h2>Registration form</h2></font></center>

      <div class="form-group">

        {{csrf_field() }}
        <script type="text/javascript">



            <label for="example-number-input" class="col-2 col-form-label">ID</label>


            <input class="form-control" type="number" value="1" name="id">


 </script>
  <label    for="example-text-input" class="col-2 col-form-label">Name</label>
   <input class="form-control" type="text" value="name" name="Name">


  <label for="example-text-input" class="col-2 col-form-label">Job_titleID</label>
    <select   class="form-control" type="text" value="0"  name="Job_ID"> <option>-0-</option>

        @foreach($register as $cat)
     <option value="{{$cat->Job_ID}}" name="Job_ID">{{$cat->Job_ID}}</option>
@endforeach

    </select>






   <label for="example-text-input" class="col-2 col-form-label">Identifier</label>

    <input class="form-control" type="text" value="93xxxxxxV" name="Identifier">

  <label for="example-text-input" class="col-2 col-form-label">Street</label>


    <input class="form-control" type="text" value="Panagoda road" name="Road">

  <label for="example-text-input" class="col-2 col-form-label">city</label>

    <input class="form-control" type="text" value="Rakwana" name="City">

     <label for="example-text-input" class="col-2 col-form-label">Postal Code</label>

<input class="form-control" type="text" value="7000" name="P_code">

  <label for="example-text-input" class="col-2 col-form-label">Countery</label>

    <input class="form-control" type="text" value="Sri Lanaka" name="Address">

  <label for="example-email-input" class="col-2 col-form-label">Email</label>

    <input class="form-control" type="email" value="mithika.hetti@gmail.com" name="email">

  <label for="example-tel-input" class="col-2 col-form-label">Telephone</label>

    <input class="form-control" type="tel" value="+94 071 172 6818" name="tel">


  <label for="example-datetime-local-input" class="col-2 col-form-label">Date and time</label>

    <input class="form-control" type="datetime-local" value="2011-08-19T13:45:00" name="datetime-local">
    <br>
    <br>

    <button type="Submit" name="Submit" value="Add" id="add" class="btn btn-primary">Submit</button>


</div>

</form>
</div>
</div>
</div>
@endsection

我的控制器

<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;


use App\Job_ID;


class register extends Controller{






public function register()
{



    $register=Job_ID::all();
    return view('cutomer.register',['register' => $register]);

}



function insert(Request $req)
{

$ID=$req->input('ID');
$Name=$req->input('Name');
$Job_ID=$req->input('Job_ID');
$Identifier=$req->input('Identifier');
$Road=$req->input('Road');
$City=$req->input('City');
$P_code=$req->input('P_code');
$Address=$req->input('Address');
$email=$req->input('email');
$tel=$req->input('tel');
$datetimelocal=$req->input('datetime-local');

$data = array('E_ID'=>$ID,"E_Name"=>$Name,"Job_ID"=>$Job_ID,"E_Phone"=>$Identifier,"Road" =>$Road,"City" =>$City,"P_Code" =>$P_code,"E_Address" =>$Address,"E_email"=>$email,"E_Phone" =>$tel,"Date"=>$datetimelocal);

DB::table('employer')->insert($data);

}
}

我创建了 ID 列并在 Mysql 中设置了自动递增。我想在客户注册表单的 Id 文本字段上显示最大值(4)。

【问题讨论】:

    标签: javascript php mysql laravel-5


    【解决方案1】:

    使用 mysql 你可以做到这一点

    SELECT AUTO_INCREMENT
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = "databaseName"
    AND TABLE_NAME = "tableName"
    

    对于 laravel

    $table = DB::select("SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'databaseName' AND TABLE_NAME = 'tableName'");
    if (!empty($table)) { echo $table[0]->AUTO_INCREMENT; }
    

    【讨论】:

    • 我想要 laravel 代码..你为 MySQL 中的一个表的当前 AUTO_INCREMENT 值编写了 SQL 命令。我有数据检索问题。
    • @A.lakkantha 解决方案在 laravel 上运行良好基于此,我在我的一个项目中进行了设置。 ` $accountTable = DB::select("SHOW TABLE STATUS LIKE 'account_master'"); if(!empty($accountTable)){ return $accountTable[0]->Auto_increment; } else{ 返回 $this->total_customer_account() + 1; } `
    【解决方案2】:

    在您的架构生成器上:$table-&gt;increments('yourPrimaryKey');

    例子:

    Schema::table('users', function (Blueprint $table) {
        $table->increments('id');
    });
    

    查看文档:https://laravel.com/docs/5.5/migrations

    【讨论】:

    • 这是一个创建列代码。但我在客户表中创建了 Id 列。我想在我的客户注册表单上显示下一个 id 值。
    【解决方案3】:

    如果您询问如何显示模型的 id,请首先在您的控制器中进行集合查询,例如:

    $posts= Post::all();
    return view(view.post)->withPosts($posts);
    

    然后在您的刀片文件上,创建一个 foreach 以遍历所有帖子:

    @foreach ($postsas $post)
    <p>This is ID number {{ $post->id }}</p>
    @endforeach
    

    如果您要问如何手动自动递增某个列,这是我用来手动创建从值 1 开始的自动递增列 (form_counter) 的代码。基本上,我检查是否存在现有记录,如果没有,则 form_counter 列的第一条记录为 1。如果存在,则在该列中的最新值上加 1。

    $lastValueCollection = Post::where('formId', $request->inputFormId)->orderBy('Term', 'desc')->first();
            $form_counter = 1;
            if(isset($lastValueCollection->form_counter)){
                $form_counter = $lastValueCollection->form_counter + 1;    
            }
        $data = array('E_ID'=>$ID,....., 'Client_ID'=>$form_counter);
    
    DB::table('employer')->insert($data);
    

    这并不准确,但我希望这能给你一个想法。

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2011-01-01
      • 2015-07-05
      • 2016-04-15
      • 1970-01-01
      相关资源
      最近更新 更多