Laravelの「1対多」の関係を更新する方法?(ドキュメントで見つけることができません)
質問
<?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));
. 解決
update()
クエリは、公式文書:
User::find(1)->tickets()->where('type','sometype')->update(array('status' => 0));
.
あなたが持っている問題は、 get() `query が返されています複数レコード。クエリが機能するためには、レコードの場合はコレクションとして返された値を扱う必要があります。その後、各レコードを個別に各レコードで操作する必要があります。
$tickets = User::find(1)->tickets()->where('type','sometype')->get();
foreach ($tickets as $ticket) {
$ticket->update(array('status' => 0));
}
.
eloquentメソッドを呼び出すための正しい構文では、前の矢印->
- Not ドット(.
)を必要とします。
$record.update(array('foo' => 'bar')); # Incorrect
$record->update(array('foo' => 'bar')); # CORRECT!
.
更新:
モデル名は常に特異、 not 複数でなければなりません。したがって、Ticket
モデルは次のように定義されるべきです:
class Ticket extends Eloquent { // `Ticket`, not `Tickets`
public function User()
{
return $this->belongTo('User')
}
}
. 所属していません StackOverflow