美好的一天,我试图通过我的控制器通过B
调用我的模型获得结果,我的控制器是Mainmodel
。
这是我的控制器
MainController
这是我的模特
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use app\Mainmodel;
class MainController extends Controller
{
function index(){
echo "Kok, direct akses sih?";
}
function get_menu(){
$menu = app\Mainmodel::request_menu();
dd($menu);
}
}
我的路线
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Mainmodel extends Model
{
function request_menu(){
$menu = DB::table('menu')
->orderBy('[order]', 'desc')
->get();
return $menu;
}
}
我上面的脚本我得到了这个
MainController.php第17行中的FatalErrorException:Class &#39;应用软件\ HTTP \控制器\应用\ Mainmodel&#39;找不到
我该如何解决这个问题?提前谢谢。
注意:我对laravel有点困惑。我之前使用过codeigniter。我有一个简单的问题。在laravel请求数据库应该使用模型?或者我可以使用我的控制器来处理我对数据库的请求。
抱歉我的英语不好。答案 0 :(得分:2)
我想是因为您使用app
而不是App
作为命名空间。
尝试更改:
app\Mainmodel
致:
App\Mainmodel
或者,您可以在类的顶部添加use
语句,然后只引用该类,即:。
use App\Mainmodel;
然后你可以做类似的事情:
Mainmodel::request_menu();
您当前使用模型的方式不是Eloquent
应该使用的方式。正如我在评论中提到的,您应该为数据库中的每个表创建一个模型(或者至少在大多数用例中)。
要执行此操作:
php artisan make:model Menu
然后在新创建的Menu
模型中添加:
protected $table = 'menu';
这是因为Laravel的默认命名约定对于类名是单数,对于表名是复数。由于您的表名是菜单而不是菜单,您只需要告诉Laravel使用不同的表名。
然后你的控制器看起来像:
<?php
namespace App\Http\Controllers;
use App\Menu;
class MainController extends Controller
{
public function index()
{
echo "Kok, direct akses sih?";
}
public function get_menu()
{
$menu = Menu::orderBy('order', 'desc')->get();
dd($menu);
}
}
希望这有帮助!
答案 1 :(得分:0)
您可以通过不同的解决方案解决它。解决方案是您无需致电request_menu();
,您可以在控制器中获取它。
<强> MainController 强>
use use Illuminate\Support\Facades\DB;
public function get_menu(){
$menu = DB::table('menu')
->orderBy('Your_Field_Name', 'DESC')
->get();
dd($menu);
}