Mam dwie tabele w mojej bazie danych - vnames i vtypes
vtypes mają pole name i pole id, vnames mają pole id, pole name i pole vtypes_id, które jest polem połączonym z kluczem obcym . Jest on połączony z polem id w vtypes.Łączenie dwóch tabel w mysql
mam modele Vname i Vtype -
Vname
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Vname extends Model
{
public function vtype() {
return $this->belongsTo('App\Vtype');
}
}
Vtype
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Vtype extends Model
{
public function vname() {
return $this->hasMany('App\Vtype');
}
}
Kiedy usunąć dowolną kolumnę w tabeli vtype chcę usunąć wszystkie Vname powiązane kolumny. znalazłem rozwiązanie takiego -
public function vtypeDestroy($id) {
$vtype = Vtype::find($id);
$vtype->vname()->detach();
$vtype->delete();
Session::flash('success', 'The vtype was successfully deleted');
return redirect('/vtypes');
}
ale gdy uruchamiam tej funkcji pojawia się błąd jak ten - Call to undefined method Illuminate\Database\Query\Builder::detach()
Jak mogę to naprawić?
A gdy chcę uzyskać nazwę wtyku z vname, nie jestem w stanie tego zrobić. Starałem się ten
@foreach ($vnames as $vname)
{{ $vname->vtype()->name }}
@endforeach
w widoku
ale mam błąd jak ten - Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name
proszę kierować mi jak to naprawić dwa problemy, które stoją teraz ja.
kiedy robię '$ vtype-> vname() -> delete(); 'Otrzymuję błąd podobny do tego' SQLSTATE [42S22]: Nie znaleziono kolumny: 1054 Nieznana kolumna 'vtypes.vtypes_id' w 'where klauzula' (SQL: usuń z 'vtypes', gdzie 'vtypes'. 'vtypes_id' = 2 i ' vtypes '.' vtypes_id 'is not null) ' – Conor
Czy możesz zamieścić zaktualizowany' Model' w swoim pytaniu? –
Pytanie zaktualizowane. – Conor