【问题标题】:Laravel 5.2 model static functions useLaravel 5.2 模型静态函数使用
【发布时间】:2016-08-20 15:47:32
【问题描述】:

我可能不明白这些静态函数是如何工作的。

在我公司的项目中,他们只是在任何模型中创建一个公共静态函数,然后他们以这种方式使用它modelname::functionName()。我认为他们的模型和控制器看起来与我的相似。

现在,我正在家里训练编程,我在 App 目录中创建了一个 Character 模型。然后我尝试在 CharacterController 中以相同的方式使用它,但它说:

FatalErrorException in CharacterController.php line 18: Class 'App\Http\Controllers\Character' not found.

对我来说,Laravel 似乎是在控制器中搜索静态函数而不是我的模型。

我的模特:

<?php

namespace App;

use app;
use Illuminate\Database\Eloquent\Model;

class Character extends Model
{
    protected $table = 'character';

    public static function insertCharacterRace($race){
        DB::insert('INSERT INTO `character` VALUES `race` = ?', array($race));
    }

}

我的控制器:

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use App;

class CharacterController extends Controller
{


    public function raceSelected($race){
        Character::insertCharacterRace($race);
    }

    }

【问题讨论】:

    标签: php laravel laravel-5 model laravel-5.2


    【解决方案1】:

    在你的控制器中改变这个:

    use App;
    

    到这里:

    use App\Character;
    

    【讨论】:

    • 该死,下一个错误哈哈:Class 'App\DB' not found。谢谢你的回答:)
    • 它没有帮助。我的项目中是否有可能没有这个数据库文件?是新安装的laravel
    • 您在模型中添加了use DB;,但仍然出现同样的错误?或者,您可以将 DB:: 更改为 \DB:: - 在这种情况下,您不需要添加 use DB; 子句。顺便说一句,您不需要使用static,只需使用public function insertCharacterRace($race)
    • 该死的,我在控制器而不是类中添加了它......非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2016-11-01
    • 2016-07-25
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多