Laravel存储数据自动增量

时间:2017-09-23 03:33:01

标签: php laravel

class PostController extends Controller{
   public $grupID = 1;
   public function store(Request $request)
   {
      $post = new Post();
      $post->GroupID = 'POST-' . $this->grupID;
      $post->save();
      return response()->json($post);
      $this->grupID++;
   }
}

数据库结构

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('PostTypeID');
        $table->string('GroupID', 100)->nullable();
        $table->timestamps();
    });
}

我想让groupID自动增加,但它总是返回'POST-1'。

5 个答案:

答案 0 :(得分:2)

试试这个,您需要获取数据库中的最后一个值,

class PostController extends Controller{
       public function store(Request $request)
       {
          $lastValue = DB::table('posts')->orderBy('GroupID', 'desc')->first();
          $post = new Post();
          $post->GroupID = 'POST-' . $lastValue->GroupID + 1 ;
          $post->save();
          return response()->json($post);
       }
    }

希望这有帮助:)

答案 1 :(得分:1)

数据库迁移文件中的


$表 - >增量( 'grupID');

并且它会自动增加。

答案 2 :(得分:1)

class PostController extends Controller{
   public function store(Request $request)
   {
      $last = DB::table('posts')->last();
      $post = new Post();
      if ($last) {
         $part = explode('-', $last->GroupID);
         $post->GroupID = $part[0] . '-' . ($part[1] + 1);
      } else {
         $post->GroupID = 'POST-1';
      }
      $post->save();
      return response()->json($post);
   }
}

答案 3 :(得分:0)

当您使用return语句时,执行会停止,因此您的增量永远不会发生。将return语句放在最后。

答案 4 :(得分:0)

ObservableValue

$ groupID = Post :: pluck('GroupID')-> last(); 这将为您提供列表中的最后一个groupID(按ID升序排列)。

$ post-> GroupID ='POST-'。 $ groupID + 1; 在将其保存到表中之前,将增加该值。