次のような Vote_actions というデータベースとモデルがあります。
- ID
- group_id
- ユーザーID
- アクションタイプ
- 匿名 (ブール値)
ユーザーは匿名であることを要求できます (ブール値が true になります)。その場合、返されたモデルから group_id と user_id を -1 に変更します。
私がそれを行うことができるlaravelの方法はありますか?
もちろん簡単にできます。アクセサー (ゲッター) について読む: 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;
}
あなたは特別な条件で、エッジケースに傾いています。
アクセサーを利用します。
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 に設定することをお勧めします。