我一直面临着在新的laravel框架版本5中无法在控制器内部使用模型的问题。我使用artisan命令创建了模型 “php artisan make:model Authentication”,它在app文件夹中成功创建了模型,之后我在其中创建了一个小函数测试,我的模型代码如下所示。
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Authentication extends Model {
protected $table="canteens";
public function test(){
echo "This is a test function";
}
}
现在我不知道,如何将模型的函数test()调用到我的控制器,任何帮助都将不胜感激,提前致谢。
答案 0 :(得分:11)
运行该功能并查看输出的快速而肮脏的方法是编辑app\Http\routes.php
并添加:
use App\Authentication;
Route::get('authentication/test', function(){
$auth = new Authentication();
return $auth->test();
});
然后访问您的网站并转到此路径:/authentication/test
Route :: get()的第一个参数设置路径,第二个参数说明调用该路径时该怎么做。
如果你想进一步,我建议创建一个控制器并用控制器上的方法替换该匿名函数。在这种情况下,您可以通过添加以下内容来更改app\Http\Routes.php
:
Route::get('authentication/test', 'AuthenticationController@test');
然后使用artisan创建一个名为AuthenticationController
的控制器或创建app\Http\Controllers\AuthenticationController.php
并对其进行编辑:
<?php namespace App\Http\Controllers;
use App\Authentication;
class AuthenticationController extends Controller {
public function test()
{
$auth = new Authentication();
return $auth->test();
}
}
同样,您可以转到Laravel网站上的/authentication/test
来查看结果。
答案 1 :(得分:4)
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Authentication extends Model {
protected $table="canteens";
public function scopeTest(){
echo "This is a test function";
}
}
只需在test()
前加上scope
。这将成为scopeTest()
。
现在您可以从Authentication::Test()
。
答案 2 :(得分:3)
在方法名称之前使用范围
<?php
namespace App\Models;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;
class Mainmenu extends Model
{
public function scopeLeftmenu() {
return DB::table('mainmenus')->where(['menu_type'=>'leftmenu', menu_publish'=>1])->orderBy('menu_sort', 'ASC')->get();
}
}
上面的代码我试图访问某些目的来调用左侧菜单的数据库
比我们可以在Controller中轻松调用它
<?php
Mainmenu::Leftmenu();
答案 3 :(得分:2)
您可以在控制器中调用模型功能,如
$value = Authentication::test();
var_dump($value);
答案 4 :(得分:1)
只需将其设置为静态 公共静态函数test(){ .... } 那么你可以这样称呼它 身份验证:: test();
答案 5 :(得分:0)
1)首先,确保您的模型位于模型文件夹
中2)然后假设您有一个名为Property的模型,其中有一个名为returnCountries的方法。
public function returnCountries(){
$countries = Property::returnCountries();
}
当然,在你的情况下,用你的Model的名称替换Property,如果你的函数是test,则用名称返回returnCountries,这是Test
并在模型中编写请求国家/地区的函数
所以在你的模型中,放置一个:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Authentication extends Model {
protected $table="canteens";
public function test(){
return $test = "This is a test function";
}
}
这就是你的控制器将要获得的
答案 6 :(得分:0)
对我来说,修复是将函数设置为静态:
public static function test() {..}
然后直接在控制器中调用它:
Authentication::test()