Php 如何在laravel eloquent类中添加自定义方法

Php 如何在laravel eloquent类中添加自定义方法,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我想给Laravel Eloquent添加一些特定的自定义方法,以便 我可以从任何模式访问这些方法 像 还有比这个更好的解决方案吗?如果方法checkAndCreateLogTable也将在将来创建的每个模型中使用,那么创建一个扩展雄辩类的类将更容易 如果不是,你应该创造一种特质。例如: 但是,如果在应用程序安装开始时这只是一项一次性任务,我会创建一个控制台命令或迁移方法名称?您可以添加抽象类扩展模型作为所有模型的父级,或者使用traitcreate basemodel和类YourModel扩展

我想给Laravel Eloquent添加一些特定的自定义方法,以便 我可以从任何模式访问这些方法

还有比这个更好的解决方案吗?

如果方法checkAndCreateLogTable也将在将来创建的每个模型中使用,那么创建一个扩展雄辩类的类将更容易

如果不是,你应该创造一种特质。例如:


但是,如果在应用程序安装开始时这只是一项一次性任务,我会创建一个控制台命令或迁移方法名称?

您可以添加抽象类扩展模型作为所有模型的父级,或者使用traitcreate basemodel和类YourModel扩展BaseModel@xmhafiz:是的,这是个好主意。出于好奇,我可以用拉雷维尔的方式写一些有说服力的自定义方法,这样我就不会妨碍生态系统了。谢谢@thomas的回答,trait是个好主意。只是出于好奇,有可能以Laravel的方式写一些有说服力的自定义方法,这样我就不会妨碍生态系统了。我会把这个问题保留一两天,如果没有其他方法,我会接受你的答案。@Promit好吧,traits是一种很好的选择性方法,可以防止入侵现有代码。根据此方法的功能,可能有更好的方法。请解释这个checkAndCreateLogTable方法的用途。在我80%的模型中,我需要7-8种方法。checkAndCreateLogTable只是一个引用,我在其中传递表名,它检查一个表一个用户特定的表是否存在,如果没有,那么从一个示例表创建一个表。
class Bar extends Eloquent
{
    public $table = 'mytable';

    public function foo($log_table)
    {
        self::checkAndCreateLogTable($log_table); //<-- this 'll be a custom function defined in Eloquent
    }

}
class Foo extends Eloquent
{

    public function checkAndCreateLogTable($log_table)
    {
        //get the table name from the modal and do some stuff
    }

}

class Bar extends Foo
{

}
trait HasLogTable
{
    public function checkAndCreateLogTable ($log_table)
    {
        // Get the table name from the model and do some stuff
    }
}

class Bar extend Eloquent
{
    use HasLogTable;
}