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