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。这正是我需要的。谢谢你,卡杰顿。