Php 将静态函数添加到\Lightning\Database\Eloquent\Collection
我正在尝试添加一个静态函数到 我尝试了以下方法: 创建了一个类:Php 将静态函数添加到\Lightning\Database\Eloquent\Collection,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我正在尝试添加一个静态函数到 我尝试了以下方法: 创建了一个类: class CustomCollection extends \Illuminate\Database\Eloquent\Collection { public static function test() { die('test'); } } 然后我试着把这门课也包括进去 但如果运气不好,我会收到错误消息:调用未定义的方法illumb\Database\elount\Collection
class CustomCollection extends \Illuminate\Database\Eloquent\Collection
{
public static function test()
{
die('test');
}
}
然后我试着把这门课也包括进去
但如果运气不好,我会收到错误消息:调用未定义的方法illumb\Database\elount\Collection::test()
调用
User::where('id',1)->get()->test()时给出了错误消息代码>因为我不能使用注释功能,所以我必须回答,尽管我觉得它不应该被标记为答案。错误指出您正在调用Collection::test()。Collection类中的方法测试不存在!您使用Collection扩展了CustomCollection,并将一个方法添加到CustomCollection而不是Collection 由于我不能使用评论功能,我必须回答,尽管我觉得不应该将其标记为回答。错误指出您正在调用Collection::test()。Collection类中的方法测试不存在!您使用Collection扩展了CustomCollection,并将一个方法添加到CustomCollection而不是Collection 若要使用您的集合而不是Elounce提供的集合,请在模型中添加一个方法:
public function newCollection(array $models = [])
{
// of course, adjust your namespace accordingly
return new CustomCollection($models);
}
它将在illumb\Database\elount\Model
类中重写此方法:
/**
* Create a new Eloquent Collection instance.
*
* @param array $models
* @return \Illuminate\Database\Eloquent\Collection
*/
public function newCollection(array $models = array())
{
return new Collection($models);
}
现在,每次雄辩的查询返回集合时(例如,使用YourModel::all()
),都将使用自定义集合,并且您添加的方法将可用
来源:若要使用您的集合而不是Elounce提供的集合,请在模型中添加一个方法:
public function newCollection(array $models = [])
{
// of course, adjust your namespace accordingly
return new CustomCollection($models);
}
它将在illumb\Database\elount\Model
类中重写此方法:
/**
* Create a new Eloquent Collection instance.
*
* @param array $models
* @return \Illuminate\Database\Eloquent\Collection
*/
public function newCollection(array $models = array())
{
return new Collection($models);
}
现在,每次雄辩的查询返回集合时(例如,使用YourModel::all()
),都将使用自定义集合,并且您添加的方法将可用
来源:这些方法从不使用您的类。你不能扩展某个东西,然后希望其他东西神奇地使用它。那些方法永远不会使用你的类。你不能扩展某个东西,然后希望其他东西神奇地使用它。这正是我需要的。非常感谢@kajetons。这正是我需要的。谢谢你,卡杰顿。