У меня есть отношение многие ко многим , когда у меня было две модели, принадлежащие ToMany друг другу.
Поэтому я хотел бы обновить сводную таблицу, но сначала я хочу узнать,две модели уже существуют в этой сводной таблице.
Итак, вот определение моих отношений в двух моих моделях ниже:
Модель AnalysisRequest
public function request_methods()
{
return $this->belongsToMany('App\Models\Methodologies')->withTimestamps();;
}
и в моей другой модели: Модель методологии
public function methods_requested()
{
return $this->belongsToMany('App\Models\AnalysisRequest')->withTimestamps();;
}
Таким образом, у этих двух моделей есть своя сводная таблица со всеми прикрепленными ID .Теперь я хочу, чтобы у этих двух моделей уже были прикрепленные друг к другу модели, и я хочу, чтобы флажок был установлен в представлении, которого я не смог достичь.
Вот сводная модель
<?php
namespace App\Models;
use Eloquent as Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class AnalysisRequestMethodologies extends Model
{
public $table = 'analysis_request_methodologies';
public $fillable = [
'analysis_request_id',
'methodologies_id',
];
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'analysis_request_id' => 'integer',
'methodologies_id' => 'integer',
];
/**
* Validation rules
*
* @var array
*/
public static $rules = [
'analysis_request_id' => 'required|unique_with:analysis_request_methodologies,methodologies_id',
'methodologies_id' => 'required',
];
}
Вот мой код контроллер ниже:
public function edit($id)
{
$analysis_request = $this->analysisrequestRepository->findWithoutFail($id);
$checkeds = AnalysisRequest::find($id)->request_methods()->pluck('id');
return view('encoder-dashboard.analysis-request-methods.create', compact('analysis_request', 'checkeds'));
}
И в моем представлении
<div class="form-group col-sm-12">
@forelse($analysis_request->category->methodology as $method)
<label>
<?php $checked = in_array($method->id, $checkeds) ? true : false; ?>
{{ Form::checkbox('methodologies_id[]', $method->id) }}
{{ $method->name }} with the lead time of {{ $method->lead_time }} and the DOH standard of {{ $method->doh_standard }}
</label>
@empty
<h3>The category you selected has no method yet</h3>
@endforelse
</div>
Другая ссылка на вопрос , которая может быть связана с моим вопросом.
У меня есть ошибка в моем представлении , что говорит:
Нарушение ограничения целостности: 1052 Идентификатор столбца в списке полей является неоднозначным (SQL: выберите id
из methodologies
внутреннее соединение analysis_request_methodologies
в methodologies
. id
= analysis_request_methodologies
. methodologies_id
, где analysis_request_methodologies
. analysis_request_id
= 10)
В упомянутом вопросе в решении сказано, что мне нужно использовать lists
, но оно устарело в Laravel 5 Мне нужно использовать pluck
вместо этого.Но все еще не могу решить загадку.
Ценю, если кто-то может помочь.Заранее спасибо.