簡體   English   中英

Laravel 8 - 如何將一個表中的值更新到另一個表中

[英]Laravel 8 - How to update the value in one table to another table

很抱歉這個問題可能有點冗長,我想確保我的問題得到徹底解決。

我有一個在界面上看起來像這樣的卡車表:

在此處輸入圖像描述

如您所見,我有 12、13、15 號卡車,號碼是 go。 至於“數量”列,它表示分配給該特定卡車的包裹數量。 Truck 和 Package 表之間存在一對多關系。 一輛卡車可以裝很多包裹。 一個package屬於單車。

有一個單獨的 Package 頁面供用戶添加新包裹並將包裹分配給特定卡車。 這些包裹將自動添加到卡車頁面的“數量”欄中。

Package頁面在界面上是這樣的。 它仍然是空的,因為還沒有記錄,這就是我的問題所在。 在此處輸入圖像描述

當用戶點擊New Package Details按鈕時,他們將被引導至此:

在此處輸入圖像描述

如您所見,卡車編號顯示在下拉菜單中,值取自我們上面看到的卡車表。

當用戶將新卡車數據插入卡車表時,此創建 Package 上的下拉列表應該會自動更新。 我將“10”硬編碼到菜單中,因為我正在嘗試弄清楚如何去做。 我們應該在此列表中看到“12”、“13”和“15”。 當用戶點擊卡車號碼時,例如“12”,卡車頁面內的數量也應該更新。

我的卡車和 Package Model:

class Truck extends Model
{
    use HasFactory;
    protected $primaryKey = 'truck_id';
    protected $fillable = ['truck_number', 'no_of_items', 'postman_name', 'date_of_operation', 'status'];
    
     public function Package()
    {
        return $this->hasMany(Package::class);
    }
}

class Package extends Model
{
    use HasFactory;
    protected $primaryKey = 'package_id';

    protected $fillable = ['truck_number', 'package_number', 'destination', 'date_of_operation'];
    
     public function Truck(){
        return $this->belongsTo(Truck::class);
    }

}

我的遷移文件:

Schema::create('trucks', function (Blueprint $table) {
            $table->increments('truck_id');
            $table->string('truck_number')->unique();
            $table->integer('no_of_items')->nullable();
            $table->string('postman_name');
            $table->date('date_of_operation');
            $table->string('status');
            $table->timestamps();
        });

Schema::create('packages', function (Blueprint $table) {
            $table->increments('package_id');
            $table->string('truck_number')->nullable(); 
            $table->foreign('truck_number')->references('truck_number')->on('trucks');
            $table->string('package_number')->unique();
            $table->string('destination');
            $table->date('date_of_operation');
            $table->timestamps();
        });

包的create.blade.php文件:

<form method="post" action="{{ route('package.store') }}">
          @csrf
          <div class="form-group">    
              <label for="truck_number">Truck Number</label>
              <select name="truck_number" class="form-control">
              <option> 10 </option>
              </select>
          </div>
          <div class="form-group">
              <label for="package_name">Package Number</label>
              <input type="text" class="form-control" name="package_number"/>
          </div>
          <div class="form-group">
              <label for="destination">Destination</label>
              <input type="text" class="form-control" name="destination"/>
          </div>
          <div class="form-group">
              <label for="date_of_operation">Date of Operation</label>
              <input type="date" class="form-control" name="date_of_operation"/>
          </div>
          
          <div class="row justify-content-center">
          <a href="{{ route('package.index')}}" class="btn btn-primary bg-danger">Return</a>&nbsp;&nbsp;                        
          <button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
          </div>
      </form>

Package controller:

public function create()
    {
        $trucks = Truck::all('truck_number');
        return view('package.create')->with('truck_number', $trucks);
    }

 public function store(Request $request)
    {
        //Validate
        $request->validate([
            'truck_number' => 'required',
            'package_number' => 'required|unique:packages',
            'destination' => 'required',
            'date_of_operation' => 'required'
        ]);
        $package = Package::create([
            'truck_number' => $request->truck_number,
            'package_number' => $request->package_number,
            'destination' => $request->destination,
            'date_of_operation' => $request->date_of_operation
        ]);
        return redirect('package');
       
    }

如何將Truck Details頁面中的truck_number值連接到Package Details下拉菜單列表中的truck_number值,並使下拉列表在每次分配新的truck_number自動更新?

我認為您正在嘗試遍歷您的卡車 ID 以填充 select HTML 元素。

嘗試將您的刀片更新為此。

<form method="post" action="{{ route('package.store') }}">
          @csrf
          <div class="form-group">    
              <label for="truck_number">Truck Number</label>
              <select name="truck_number" class="form-control">
              @foreach ($truck_number as $number)
                  <option value="{{$number['truck_number']}}">{{$number['truck_number']}}</option>
              @endforeach

              </select>
          </div>
          <div class="form-group">
              <label for="package_name">Package Number</label>
              <input type="text" class="form-control" name="package_number"/>
          </div>
          <div class="form-group">
              <label for="destination">Destination</label>
              <input type="text" class="form-control" name="destination"/>
          </div>
          <div class="form-group">
              <label for="date_of_operation">Date of Operation</label>
              <input type="date" class="form-control" name="date_of_operation"/>
          </div>
          
          <div class="row justify-content-center">
          <a href="{{ route('package.index')}}" class="btn btn-primary bg-danger">Return</a>&nbsp;&nbsp;                        
          <button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
          </div>
      </form>

暫無
暫無

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

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