2

次のような Vote_actions というデータベースとモデルがあります。

  • ID
  • group_id
  • ユーザーID
  • アクションタイプ
  • 匿名 (ブール値)

ユーザーは匿名であることを要求できます (ブール値が true になります)。その場合、返されたモデルから group_id と user_id を -1 に変更します。

私がそれを行うことができるlaravelの方法はありますか?

4

3 に答える 3

2

もちろん簡単にできます。アクセサー (ゲッター) について読む: https://laravel.com/docs/5.1/eloquent-mutators

例:

function getUserIdAttribute()
{
    return $this->anonymous ? -1 : $this->user_id;
}

function getGroupIdAttribute()
{
    return $this->anonymous ? -1 : $this->group_id;
}
于 2016-03-10T06:06:51.873 に答える
2

あなたは特別な条件で、エッジケースに傾いています。

アクセサーを利用します。

class VoteActions extends \Eloquent {

    public $casts = [
        'anonymous' => 'boolean'
    ];
    ...

    /**
    * Accessors: Group ID
    * @return int
    */
    public function getGroupIdAttribute()
    {
        if((bool)$this->anonymous === true) {
            return -1;
        } else {
            return $this->group_id;
        }
    }

    /**
    * Accessors: User ID
    * @return int
    */
    public function getUserIdAttribute()
    {
        if((bool)$this->anonymous === true) {
            return -1;
        } else {
            return $this->user_id;
        }        
    }
}

公式ドキュメント: https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

ただし、アプリケーションの整合性を維持するために、必要に応じてデータベースの値を直接 -1 に設定することをお勧めします。

于 2016-03-10T06:11:03.193 に答える