簡體   English   中英

Laravel jQuery-檢查數據庫中是否存在行

[英]Laravel jQuery - Check if row exists in database

在我的應用程序中,我構建了一個頁面,用戶可以在其中看到進度條,該進度條顯示在后台發生的操作的進度。 該進度條的一部分如下:我必須在jQuery中檢查數據庫中是否存在具有特定ID的特定行。 如果存在,進度條必須跳到30%。 如果它不存在,那么它什么也不做。

我有一個名為Droplets的數據庫表,其中有一個名為Webshop_id的字段。 如果此表中存在一個Droplet ,其具有用戶剛創建的一個webshop_id ,則進度條將達到30%。

簡要說明一下

  • 使用jQuery檢查數據庫中webshop_id存在帶有webshop_id的小droplet

  • 如果存在,則使進度條的寬度為30%;

  • 如果不存在。 沒做什么。

PHP在此問題中的簡單if語句看起來像這樣

if( Droplet::where("webshop_id", "=", $webshop->id)->exists())

    Make the progress bar 30% in width

else {

    Just do nothing

}

但這需要在jQuery中完成,以使進度條的寬度為30%。 解決此問題的最佳方法是什么?

需要執行此操作的頁面如下所示。

@extends('layouts.home') @section('content')
<div class="container" id="showEffect">
<div class="row justify-content-md-center">
<div class="col-md-10">
  <div class="card depth-5 p-4 mb-5">
    <div class="card-header p-4 bg-white">
      <div class="row">
        <div class="col-md-12">
          <h2 class="mb-4 text-green"><i class="fal fa-check-circle mr-3"></i> Payment succesfull!</h2>
        </div>
        <div class="col-md-8">
          <p class="text-muted m-0">Thank you! Your payment has been recieved! The order is confirmed. A reciept is being send to <b>{{ $order->user->email }}</b></p>
        </div>
      </div>
    </div>
    <div class="card-body">
      <div class="row">
        <div class="col-md-12">
          <h5>Summary</h5>
          <div class="card depth-2">
            <div class="card-body">
              <div class="row">
                <div class="col-md-6 text-right">
                  <ul class="list-unstyled">
                    <li class="text-muted">Payment ID:</li>
                    <li class="text-muted">Order date:</li>
                    <li class="text-muted">Payment method:</li>
                    <li class="text-muted">Total sum: </li>
                  </ul>
                </div>
                <div class="col-md-6 text-left">
                  <ul class="list-unstyled">
                    <li>{{ $payment->id }}</li>
                    <li>{{ $order->created_at->toFormattedDateString() }}</li>
                    <li>{{ $payment->method }}</li>
                    <li>€ {{ $order->price_sum }}</li>
                  </ul>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="card-footer mt-3 bg-white">
      <h4>Your Webshop</h4>
      <p class="text-muted">Your webshop is installing! We advise you not to click away if u want to prevent cancelling the installation</p>

      <div class="row">
        <div class="col-md-12 text-right">
          <h3>37%</h3>
        </div>
        <div class="col-md-12 mb-3">
          <div class="progress mb-3">
            <div id="progress-install" class="progress-bar andcode-progress progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100" style="width: 10%"></div>
          </div>
        </div>
        <div class="col-md-12 text-right">
          <a href="" class="btn btn-orange disabled">See the result</a>
        </div>
      </div>
    </div>
  </div>
</div>
</div>
</div>

{{ $webshop->id }}

<div class="andcode-clouds">

</div>
<script>
$(document).ready(function() {
var checkdb = function() {
  // Bestaat de droplet met de webshop id van de aangemaakte webshop in de database. Als deze wel bestaat, Spring naar 30%. Als hij niet bestaat. Dan niks
  var ele = document.getElementById('progress-install');
  ele.style.width = 30 + '%';
 };
 setInterval(checkdb(), 1000 * 60);
 })
 </script>
 @endsection

我可以隨時在此刀片文件中調用{{ $webshop->id }} 此ID必須與液滴表中的“ Webshop_ID”匹配

用您的邏輯使一個控制器功能

function() {
    if( Droplet::where("webshop_id", "=", $webshop->id)->exists())

       $id_exists = 1;

    else {

        $id_exists = 0;

    }

    return response()->json(['id_exists' => $id_exists]);
}

然后在刀片文件中

在腳本中,對上述控制器函數進行ajax調用並獲取id_exists的值,現在您可以根據此結果決定是否顯示進度條

您可以通過這種方式通過數據庫和控制器驗證來執行此操作

$table->string('abc')->unique();

這是遷移文件中的表格列

$this->validate($request,[
    'abc'=>'table_name:unique',
]);

這是您的控制器代碼,其中abc是您的請求鍵,在$ table-> string('abc')-> unique();中; 這是您表的列名,而table_name是您必須用自己的表名替換的表名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM