私はLaravelを使ってページ設定を行う際に問題が発生しました。laravelのページネーションはデータベースに新しい行を挿入します
これは私のコントローラのメソッドです:
public function manageElection(Request $r,$id,$idx){
$program = MProgram::find($idx);
$person = MPeople::find($id);
$treatment = Treatment::where('people_id',$person->id)->first();
if($treatment!=null){
$treatment->relation($program->id);// se supone que esto lo pone en la tabla N-N
}else{
$treatment = new Treatment();
$treatment->people_id = $id;
$treatment->user_id = 1; //Cuando este la autentificación acabada, esto habrá que cambiarlo
$treatment->center_id = 1; //ESTO HAY QUE CAMBIARLO
$treatment->saveTreatment();
$treatment->relation($program->id);// se supone que esto lo pone en la tabla N-N
}
$mgobjectives = Mgobjective::all();
$ msobjectives = Msobjective ::のpaginate(7);
return view('addPeopleProgram')->with('gobjectives',$mgobjectives)->with('sobjectives',$msobjectives)->with('program',$program)->with('treatment',$treatment);
}
これがルートである:
Route::any('/electionProgram/{id}-{idx}','[email protected]');
これは図:ページネーションが動作
@extends('layouts.app')
@section('content')
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="row">
<a href="/elementos">Atrás</a>
</div>
<form method="POST" action="/addPeopleObjective /{{$program->id}}" >
{{ csrf_field() }}
<div class="row">
<div class="col-md-6">
<h3>Añade objetivos generales a este programa</h3>
<div class="form-group">
<ul class="list-unstyled">
@foreach($gobjectives as $gobjective)
<li>
<label>{{$gobjective->name}}</label>
<div class="checkbox">
<label><input value="{{$gobjective->id}}" type="radio" name="gobjectives{{$gobjective->id}}" class="subject-list">Si</label>
<!--<label><input value="no" type="radio" name="{{$gobjective->name}}{{$gobjective->id}}" class="subject-list">No</label>-->
</div>
</li>
@endforeach
</ul>
</div>
</div>
<div class="col-md-6">
<h3>Añadir objetivos específicos a este programa</h3>
<div class="form-group">
<ul class="list-unstyled">
@foreach($sobjectives as $sobjective)
<li>
<label>{{$sobjective->name}}</label>
<div class="checkbox">
<label><input value="{{$sobjective->id}}" type="radio" name="sobjectives{{$sobjective->id}}" class="subject-list">Si</label>
<!---<label><input value="noS" type="radio" name="{{$sobjective->name}}{{$sobjective->id}}" class="subject-list">No</label>-->
</div>
</li>
@endforeach
</ul>
</div>
{{ $sobjectives->links() }}
</div>
</div>
<div class="row">
<input type="submit" value="Terminar"/>
</div>
</form>
</div>
@endsection
、PR
public function relation($id){
$this->programs()->attach($id);
}
:oblemは、私は2ページを選択すると、Laravelは(再び)オブジェクトの処理と、それは関係がモデルの治療方法である
$treatment->saveTreatment();
$treatment->relation($program->id);
プログラムでぐるぐるという関係を保存しようとしています誰かが何が起こっているかもしれないという考えを持っていますか?私はlokingしてきましたが、私のようなケースはありませんでした。前もって感謝します!
編集:私は持っている
エラーは次のとおりです。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '7-1' for key 'mprogram_treatment_mprogram_id_treatment_id_unique'
@Christophvhは、あなたのコードは、データを取得するために、別のために削除して、そのデータを保存する機能を持っている必要があり、言ったようにに。あなたが学んだ場所やLaravelを教えた人がわからないが、それを行うためのより簡単でより良い方法がある(Doctrineリポジトリを使用している場合などは、ページャーツールがある) –
あなたの治療クエリの挿入クエリは、各ページ。したがって、ページを切り替えるたびに実行されます。適切なif条件でブロックする必要があります。 – Dinoop
はい、私は何かを見せたい時から店を分けなければならないことを理解していますが、それをまとめる理由は、DBに治療を保存した後に、他の方法私はそれを一緒にしない場合は動作しません。 –