我有下面的表格,带有2个组合框“ Metier = profession”“ tache = task”,我选择了一个Metier和一个tache,之后我希望出现一个包含所有“ techniciens”及其“ tarification”的表格“(当然,只有与已经选择的“ tache”相关的“ tarification”)。
这是要提供的表格 enter image description here
行程
public function up()
{
Schema::create('taches', function (Blueprint $table) {
$table->increments('id');
$table->string('libelle_tache');
$table->float('Tarif', 8,2)->nullable();
$table->integer('metier_id')->unsigned();
$table->foreign('metier_id')->references('id')->on('metiers');
$table->datetime('deleted_at')->nullable();
$table->timestamps();
});
}
干预
Schema::create('interventions', function (Blueprint $table) {
$table->increments('id');
$table->date('date_intervention')->nullable();
$table->string('description');
$table->dateTime('duree_prevu');
$table->boolean('statut');
$table->integer('technicien_id')->unsigned();
$table->foreign('technicien_id')->references('id')-
>on('techniciens');
$table->integer('tarification_id')->unsigned();
$table->foreign('tarification_id')->references('id')-
>on('tarificationtaches');
$table->integer('client_id')->unsigned();
$table->foreign('client_id')->references('id')->on('Clients');
$table->timestamps();
});
tarificationtache
Schema::create('tarificationtaches', function (Blueprint $table) {
$table->increments('id');
$table->float('tarif', 8,2);
$table->integer('tache_id')->unsigned();
$table->foreign('tache_id')->references('id')->on('taches');
$table->datetime('deleted_at')->nullable();
$table->timestamps();
});
干预课程
class Intervention extends Model
{
protected $fillable = [ ];
protected $guarded = [];
public function avisintervention()
{
return $this->hasMany(AvisIntervention::class);
}
public function technicien()
{
return $this->belongsTo(technicien::class);
}
public function client()
{
return $this->belongsTo(Client::class);
}
public function tarificationtache()
{
return $this->belongsTo('App\Tarificationtache','tarification_id');
}
讲授班
class tache extends Model
{
use SoftDeletes;
protected $guarded = [];
protected $dates = ['deleted_at'];
public function metier()
{
return $this->belongsTo(Metier::class);
}
public function tarificationtache()
{
return $this->hasMany(Tarificationtache::class);
}
}
中级班
class metier extends Model
{
use SoftDeletes;
protected $guarded = [];
protected $dates = ['deleted_at'];
public function taches()
{
return $this->hasMany(Tache::class);
}
public function techniciens()
{
return $this->belongsToMany('App\technicien','technicien_zone'
,'metier_id','technicien_id');
}
}
tarificationtache类
class tarificationtache extends Model
{
use SoftDeletes;
protected $guarded = [];
protected $dates = ['deleted_at'];
public function tache()
{
return $this->belongsTo(Tache::class);
}
public function techniciens()
{
return $this->belongsToMany('App\technicien',
'technicien_tarificationtache' ,'tarificationtache_id','technicien_id');
}
public function intervention() {
return $this->hasMany(intervention::class);
}
}
干预控制器
public function create()
{
$client = client::orderBy('id', 'asc')->get();
$metiers = metier::orderBy('id', 'asc')->get();
$technicien = Technicien::orderBy('id', 'desc')->get();
$tarifications = tarificationtache::orderBy('id', 'desc')->get();
return view('intervention.create')->with('technicien',
$technicien)->with('client',$client)->with('metiers',$metiers)-
>with('tarifications',$tarifications);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(InterventionRequest $request)
{
$intervention = new Intervention();
$intervention ->description =$request->input('description');
$intervention ->duree_prevu =$request->input('duree_prevu');
if($request->has('statut')){
$intervention->statut = $request->input('statut');
}else{
$intervention->statut = 0;
}
$intervention ->technicien_id = $request->input('technicien_id');
$intervention ->client_id = $request->input('client_id');
$intervention ->tarification_id = $request->tarificationtache_id;
$intervention->save();
干预create.blade.php
@extends('Layouts/app')
@extends('Layouts/master')
@section('content')
<!-- jQuery -->
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
<link
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-
datepicker/1.5.0/css/bootstrap-datepicker.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-
datepicker/1.5.0/js/bootstrap-datepicker.js"></script>
<script type="text/javascript">
var getTachesByMetierUrl = "{{url('/tachesbymetier')}}";
var getAdresseByClientUrl = "{{url('/adressebyclient')}}";
var getTarificationsByTacheUrl = "{{url('/tarificationsbytache')}}";
var getTechniciensByTarificationtacheUrl = "
{{url('/techniciensbytarificationtache')}}";
//console.log(getMetiersByTechnicienUrl,getTachesByMetierUrl
,getTarificationsByTacheUrl);
function getAdresseByClient(val) {
if(val.length>0) {
var client_id = val;
$.get(getAdresseByClientUrl+'/'+client_id,function(res) {
var html = '<option value="">-Select-</option>' ;
$.each(res.adresses,function(index,item) {
html+='<option
value="'+item.id+'">'+item.code_postal+'</option>';
});
$('#adresses').html(html);
});
}
}
function getTachesByMetier(val) {
if(val.length>0) {
var metier_id = val;
$.get(getTachesByMetierUrl+'/'+metier_id,function(res) {
var html = '<option value="">-Select-</option>' ;
$.each(res.taches,function(index,item) {
html+='<option
value="'+item.id+'">'+item.libelle_tache+'</option>';
});
$('#taches').html(html);
});
}
}
function getTechniciensByTache(val) {
if(val.length>0) {
var tache_id = val;
$.get(getTechniciensByTacheUrl+'/'+tarificationtache_id,
function(res) {
var html = '<option value="">-Select-</option>' ;
$.each(res.techniciens,function(index,item) {
html+='<option
value="'+item.id+'">'+item.nom+'</option>';
});
$('#techniciens').html(html);
});
}
}
function getTarificationsByTache(val) {
if(val.length>0) {
var tache_id = val;
$.get(getTarificationsByTacheUrl+'/'+tache_id,function(res) {
var html = '<option value="">-Select-</option>' ;
$.each(res.tarifications,function(index,item) {
html+='<option
value="'+item.id+'">'+item.tarif+'</option>';
});
$('#tarifications').html(html);
});
}
}
function rowSelect(currentRow){
//this is the code to set a dropdown menu using jquery
var technicien_id = selectedRow.children[0].innerHTML;
$("#your_technicien_dropdown_menu_id").val(technicien_id);
}
</script>
@if(count($errors))
<div class="alert alert-danger" role="alert">
<ul>
@foreach($errors ->all() as $message)
<li>{{$message}}</li>
@endforeach
</ul>
</div>
@endif
<div class="container">
<div class="row"></div>
<div class="col-md-10">
<h1>Ajout Intervention</h1>
<form action=" {{url ('intervention') }}" method="post">
{{csrf_field()}}
<div class="form-group">
<label for="client">Client</label>
<select onchange="getAdresseByClient(this.value)"
name="client_id" id="client" class="form-control">
<option value="">-Select-</option>
@foreach($client as $t)
<option value="{{$t->id }}">
{{$t->user->nom}}
</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="">date et heure </label>
<input class="form-control" type="datetime-local" name
="duree_prevu" value="{{old('duree_prevu')}}">
</div>
<div class="form-group">
<label for="">description</label>
<input type="text" name ="description" class="form-
control"value="{{old('description')}}">
</div>
<div class="form-group">
<div class="col-md-12">
<div class="col-md-4">
<label>Metier: </label>
<select onchange="getTachesByMetier(this.value)"
style="width: 200px" class="productm form-control" id="metiers">
<option value="">-Select-</option>
@foreach($metiers as $t)
<option value="{{$t->id }}">
{{$t->libelle_metier}}
</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label>tache: </label>
<select onchange="getTarificationsByTache(this.value)"
style="width: 200px" class="productname form-control"
name="tache" id="taches">
<option value="">-Select-</option>
</select>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label for="">statut : </label>
<input type="checkbox" name ="statut" value="1" required
autofocus>
</div>
<div class="form-group">
<label for="">payement</label>
<input type="checkbox" name ="payement" value="">
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-
control btn btn-primary">
</div>
</div>
</div>
</div>
<script>
function getMessage(){
$.ajax({
type:'GET',
url:'{{ ('\getliste') }}',
dataType: 'json',
success:function(tarifications_list){
$table_body = $("#tbl_body_name");
$table_body.empty();
if (tarifications_list.length > 0) {
div_no_data.style.display = 'none';
$.each(tarifications_list, function (index, value) {
$table_body.append('<tr class="deselected"
onclick="rowSelect(this)">' +
'<td style="text-align: left;">' +
value.technicien_id + '</td>' +
'<td style="text-align: left;">' +
value.tache_id + '</td>' +
'</tr>');
});
}
}
});
}
</script>
@endsection