2016-11-11 108 views

回答

5

你可以做什么:

  1. 创建BaseModel类,并把所有的类似的方法在里面。然后在所有模型中,而不是Model类扩展这个BaseModel类:

class Profile extends BaseModel

  • ​​3210使用。

  • 创建trait并将其用于所有或部分模型。

  • +1

    感谢您的超快速反应/ T –

    2

    当然,你可以做到这一点。只需简单地延长Laravel雄辩的模型,像这样:

    class User extends BaseModel { 
        // 
    } 
    

    这样你就可以做这样的事情:

    User::find(1)->isNew() 
    

    use Carbon\Carbon; 
    use Illuminate\Database\Eloquent\Model; 
    
    abstract class BaseModel extends Model 
    { 
        public function isNew() { 
         return $this->created_at->copy()->addWeek()->gt(Carbon::now()); 
        } 
    } 
    

    现在你的模型应该从这个新BaseModel类,而不是延长

    请注意,我也致电copy()方法created_at属性。这样你的created_at属性将被复制,并且不会在一周前被意外添加。

    // Copy an instance of created_at and add 1 week ahead. 
    $this->created_at->copy()->addWeek() 
    

    希望得到这个帮助。