Laravel 8 - 如何将一个 table 中的值更新为另一个 table
Laravel 8 - How to update the value in one table to another table
很抱歉这个问题可能有点冗长,我想确保我的问题得到彻底解决。
我有一辆 卡车 table 在界面上看起来像这样:
如你所见,我有12、13、15号卡车,这个号可以继续。至于 'Quantity' 列,它表示分配给该特定卡车的包裹数量。 Truck 和 Package table 之间存在一对多关系。一辆卡车可以装很多包裹。一个包裹属于一辆卡车。
存在一个单独的包裹页面,供用户添加新包裹并将包裹分配给特定卡车。这些包裹将自动添加到卡车页面的 'quantity' 列中。
Package页面在界面上是这样的。它仍然是空的,因为还没有记录,这就是我的问题所在。
当用户点击 New Package Details
按钮时,他们将被引导至此:
如您所见,卡车编号显示在下拉菜单中,值取自我们在上面看到的卡车 table。
当用户将新的卡车数据插入卡车 table 时,此创建包的下拉列表应该会自动更新。我将“10”硬编码到菜单中,因为我正在尝试弄清楚如何去做。我们应该在此列表中看到“12”、“13”和“15”。当用户点击卡车编号时,例如“12”,卡车页面内的数量也应该更新。
我的卡车和包裹型号:
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>
<button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
</div>
</form>
包控制器:
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_number
值连接到包裹详细信息[=59]中的truck_number
值=] 下拉菜单列表并使下拉列表在每次分配新的 truck_number
时自动更新?
我认为您正在尝试遍历您的卡车 ID 以填充 select HTML 元素。
尝试将您的 blade 更新为此。
<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>
<button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
</div>
</form>
很抱歉这个问题可能有点冗长,我想确保我的问题得到彻底解决。
我有一辆 卡车 table 在界面上看起来像这样:
如你所见,我有12、13、15号卡车,这个号可以继续。至于 'Quantity' 列,它表示分配给该特定卡车的包裹数量。 Truck 和 Package table 之间存在一对多关系。一辆卡车可以装很多包裹。一个包裹属于一辆卡车。
存在一个单独的包裹页面,供用户添加新包裹并将包裹分配给特定卡车。这些包裹将自动添加到卡车页面的 'quantity' 列中。
Package页面在界面上是这样的。它仍然是空的,因为还没有记录,这就是我的问题所在。
当用户点击 New Package Details
按钮时,他们将被引导至此:
如您所见,卡车编号显示在下拉菜单中,值取自我们在上面看到的卡车 table。
当用户将新的卡车数据插入卡车 table 时,此创建包的下拉列表应该会自动更新。我将“10”硬编码到菜单中,因为我正在尝试弄清楚如何去做。我们应该在此列表中看到“12”、“13”和“15”。当用户点击卡车编号时,例如“12”,卡车页面内的数量也应该更新。
我的卡车和包裹型号:
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>
<button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
</div>
</form>
包控制器:
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_number
值连接到包裹详细信息[=59]中的truck_number
值=] 下拉菜单列表并使下拉列表在每次分配新的 truck_number
时自动更新?
我认为您正在尝试遍历您的卡车 ID 以填充 select HTML 元素。
尝试将您的 blade 更新为此。
<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>
<button type="submit" class="btn btn-primary text-center bg-success">Save Details</button>
</div>
</form>