Come aggiornare una relazione "una a molte" a Laravel?(non riesco a trovarlo nei documenti)
Domanda
<?php
class User extends Eloquent {
public function tickets()
{
return $this->hasMany('Tickets')
}
}
class Tickets extends Eloquent {
public function User()
{
return $this->belongTo('User')
}
}
//and how to update a Ticket that belongs To User?
// and this dosen't work...Who can tell me the reason ,thanks !
$ticket = User::find(1)->tickets()->where('type','sometype')->get();
$ticket.update(array('status' => 0));
. Soluzione
La query update()
è documentata abbastanza chiaramente in Documenti ufficiali :
User::find(1)->tickets()->where('type','sometype')->update(array('status' => 0));
.
Sospetto il problema che stai avendo è che get () `query sta tornando più record .Affinché la tua query funzioni, dovrai trattare il valore restituito come raccolta se i record, quindi iterano e funzionano su ciascun record singolarmente.
$tickets = User::find(1)->tickets()->where('type','sometype')->get();
foreach ($tickets as $ticket) {
$ticket->update(array('status' => 0));
}
.
Si noti che la sintassi corretta per richiamare un metodo eloquente richiede una freccia precedente ->
-.
).
$record.update(array('foo' => 'bar')); # Incorrect
$record->update(array('foo' => 'bar')); # CORRECT!
.
Aggiornamento :
I nomi dei modelli dovrebbero sempre essere singolari , non plurale .Pertanto, il modello Ticket
deve essere definito come segue:
class Ticket extends Eloquent { // `Ticket`, not `Tickets`
public function User()
{
return $this->belongTo('User')
}
}
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow