Laravel自增ID

3
如何获取自增Id?我创建了数据库。它有客户注册表格。客户Id是在数据库中自动生成的。我想通过Id列的最大值来填写Id输入框。例如:example table is DB table.text field is interface. 我的源代码(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);

}
}

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

4
使用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
@A.lakkantha的解决方案在Laravel中运行良好。基于此,我已经在我的一个项目中进行了设置。$accountTable = DB :: select(“SHOW TABLE STATUS LIKE'account_master'”); if(!empty($ accountTable)){ return $ accountTable [0] - > Auto_increment; } else { return $ this->total_customer_account() + 1; } - Bhargav Patel

1
如果您想显示模型的ID,首先在控制器中进行集合查询,例如:
$posts= Post::all();
return view(view.post)->withPosts($posts);

然后在你的 Blade 文件中,使用 foreach 循环来遍历所有的帖子:

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

如果您想手动自增某个列,这是我用来手动创建一个自增列(form_counter)的代码,从值1开始。基本上,我检查是否存在记录,如果没有,则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);

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

0
在您的模式生成器中:$table->increments('yourPrimaryKey'); 示例:
Schema::table('users', function (Blueprint $table) {
    $table->increments('id');
});

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


1
这是一个创建列的代码。但是我在我的客户表中创建了Id列。我想在我的客户注册表单上显示下一个id值。 - A.lakkantha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接