重要なモデルは2種類あります。Resume
とSkill
です。 Resume
には多くのスキルがあります。ResumeSkill
Laravel定義されていないメソッドを呼び出すhasManyThrough関係のために Database Query Builder :: detach/attach()を照らします
スキルを使用してフォームを送信すると、フォームを追加して再開する前に、スキルをすべて削除します。
しかし、私は方法attach()
とdetach()
実行すると、この問題を抱えている:
未定義のメソッドを照らし\ Databaseへのコール\クエリー\ビルダー::切り離す()
をこれは、私再開モデルクラス:
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;
class Resume extends BaseModel{
public function skills(){
return $this->hasManyThrough('\myApp\Skill', '\myApp\ResumeSkill');
}
}
そして、メインスクリプト:
$record = \myApp\Resume::find($id);
$record->skills()->detach();
foreach($skills as $skill_id){
$record->skills()->attach($skill_id);
}
どうしたのですか?私が見ている答えは、attach()
ですが、BelongsToメソッドですが、古い回答でなければなりません:https://laravel.com/docs/5.2/eloquent-relationships#has-many-through。とにかく、関連/解離もうまくいきません。
は私がBelongsToMany
を使用している必要があります
を@solved。そして、attach
/detach
DOESは、この関係で動作します。
ただし、中間テーブルがあります。遠い関係は何ですか? –
国、ユーザー、コメントなど3つのテーブルがあり、特定の国のすべてのコメントを取得したい場合。 Countryモデルでは、この実装を使用します。public function comments(){return $ this-> hasManyThrough( 'App \ Comment'、 'App \ User'); } –