Laravel::在具有构造函数的帮助器类中调用方法

Laravel::在具有构造函数的帮助器类中调用方法,laravel,constructor,controller,helper,Laravel,Constructor,Controller,Helper,正如我在上一个问题中提到的,我是Laravel的初学者,因此我需要一些帮助,我必须创建helper类来为一些表创建随机Id,我使用表构造函数创建这个类来接收deffirent表: <?php namespace App\Helpers; use Illuminate\Support\Facades\DB; class RandomId { public function __construct($my_table) { $this->my_tabl

正如我在上一个问题中提到的,我是Laravel的初学者,因此我需要一些帮助,我必须创建helper类来为一些表创建随机Id,我使用表构造函数创建这个类来接收deffirent表:

<?php
namespace App\Helpers;

use Illuminate\Support\Facades\DB;

class RandomId
{
    public function __construct($my_table)
    {
        $this->my_table=$my_table;
    }

    public function get_id()
    {
        $id = mt_rand(1000000000, 9999999999); 
        if($this->check_id($id)){
            get_id();
        }
        return $id;
    }

    public function check_id($id)
    {
        $table=DB::table($this->my_table)->where('id',$id)->get();
        if (count($course)==0){
            return false;
        }
        return true;
    }
}
现在我想在控制器中调用它,我做了类似的事情,但不起作用:

<?php

namespace App\Http\Controllers\course;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\RandomId;

class Course_controller extends Controller
{
    public function add(Request $request)
    {
       $id=RandomId::get_id('courses');
       dd($id);
    }
}

这是因为
get\u id
函数不是静态的。定义静态方法时,应添加
static
关键字:

public static function get_id()
{
       ....

我得到了这个错误:
当不在对象上下文中时使用$this
您还应该将
检查id
定义为静态方法,并像这样调用它:
self::检查id($id)
感谢我所做的一切,在我将$this->mytable更改为self::$mytable后,我收到以下错误:
访问未声明的静态属性:App\Helpers\RandomId::$myu table
yw!您的代码有一些问题。首先,您定义了构造函数,但从未使用过它,而且还使用了静态函数,所以不再需要它。其次,当您定义静态方法时,它不能依赖,也不能依赖非静态属性,如
$my_table
。我建议您将表名作为静态函数的参数。也别忘了检查正确答案是否有用。多谢,我删除了这个类,只使用了偏执狂的方法
public static function get_id()
{
       ....