私は3つのDBテーブルを持っています:プロジェクト、投票、ジャンクションテーブルproject_votes。各プロジェクトには多くの投票権があります。着信メッセージを区別するために、Votesテーブルのステータス列を使用することをお勧めします(可能な値「new」および「old」)。私のアプリでは、ユーザーが自分のプロジェクトを開くと、新しいメッセージはすべて古いものになるはずです。私は、次のコードでこれを行う:Yii2。新しいメッセージを管理するベストプラクティスは何ですか?
public function getNewVotes()
{
return $this->hasMany(Vote::className(), ['id' => 'vote_id'])->where(['like', 'status', 'new'])->via('projVotes');
}
は古いように、すべての票を設定します:
$model->newVotes = 'old'// in Controller
public function setNewVotes($var)// in Model
{
foreach ($this->newVotes as $value) {
$value->status = $var;
$value->update();
}
}
するか、foreachループのない良い方法はあり は、新たな票を取得します。たとえば、where句でupdateを使用していますか?
ありがとうございます。それは有用な情報です。 – Dmytro
問題はありません。喜んで助けになるでしょう。 – ttdijkstra