Laravelの「1対多」の関係を更新する方法?(ドキュメントで見つけることができません)

StackOverflow https://stackoverflow.com//questions/22003280

  •  20-12-2019
  •  | 
  •  

質問

<?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')

    }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top