Php 有没有比model::whereName(';name';)->;更好的方法获取频繁访问的模型;第一个()?

Php 有没有比model::whereName(';name';)->;更好的方法获取频繁访问的模型;第一个()?,php,laravel,Php,Laravel,很抱歉,这个问题没有更具体,但我不太确定我想要什么。我在我的用户模型上有一个grant()函数,可以启动资金从源帐户转移到用户帐户。函数的一个参数是TransactionType。我希望能够呼叫的是: $user->grant(100000000,交易类型::乐天赢) 不打电话 $user->grant(100000000,交易类型:whereName('lotking\u win')->first()) 最好的方法是什么?我也许可以用范围来实现它,但我想知道是否有更好的方法。用范围来实现它

很抱歉,这个问题没有更具体,但我不太确定我想要什么。我在我的
用户
模型上有一个
grant()
函数,可以启动资金从源帐户转移到用户帐户。函数的一个参数是
TransactionType
。我希望能够呼叫的是:

$user->grant(100000000,交易类型::乐天赢)
不打电话

$user->grant(100000000,交易类型:whereName('lotking\u win')->first())

最好的方法是什么?我也许可以用
范围来实现它,但我想知道是否有更好的方法。

用范围来实现它是可以的。从一个作用域返回一个数据库结果甚至是完美的。在
TransactionType
中创建范围:

public function scopeLotteryWin($query)
{
    // Do what you need here
    return $query->whereName('lottery_win')->first();
}
然后,您可以通过以下方式获得该结果:

TransactionType::lotteryWin();