Niedawno rozpocząłem współpracę z Laravel4. Mam do czynienia z pewnym problemem podczas aktualizowania danych tabeli przestawnej, w przypadku wielu do wielu relacji.zaktualizuj tabelę przestawną w przypadku wielu lub wielu relacji laravel4
Sytuacja jest: Mam dwie tabeli: produkt, Producttype. Relacja między nimi to Wiele dla wielu. Moje modele są
class Product extends Eloquent {
protected $table = 'products';
protected $primaryKey = 'prd_id';
public function tags() {
return $this->belongsToMany('Tag', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
}
}
class Tag extends Eloquent {
protected $table = 'tags';
protected $primaryKey = 'tag_id';
public function products()
{
return $this->belongsToMany('Product', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
}
}
Podczas wstawiania danych do prd_tags stół obrotowy zrobiłem:
$product->tags()->attach($tag->tagID);
Ale teraz chcę zaktualizować dane w tabeli przestawnej, co jest najlepszym sposobem, aby aktualizować dane do stołu przestawnego. Załóżmy, że chcę usunąć niektóre tagi i dodać nowe tagi do konkretnego produktu.
Czytałaś te informacje w doktorzy? Czy to w ogóle pomaga ... http://four.laravel.com/docs/eloquent#working-with-pivot-tables –
@PhillSparks: Tak, przejrzałem ten dokument. w tym celu jest metoda o nazwie sync, która zajmie tablicę identyfikatorów i wstawi i usunie odpowiednio, ale co, jeśli moja tabela przestawna ma atrybuty inne niż identyfikatory obu tabel. Metoda synchronizacji powinna przyjmować tablicę obiektów zamiast tablicy liczb całkowitych. – Sameer
Eonquent promuje prosty projekt tabeli, w której tabele przestawne mają kolumny identyfikatorów używane do odwoływania się do wierszy. Oprogramowanie Eloquent nie zostało zaprojektowane z myślą o innych projektach baz danych, ponieważ dostępne są bardziej kompleksowe rozwiązania ORM. –