运行API时Lumen QueryException

问题描述 投票:0回答:1

我正在学习Lumen框架并阅读该教程:Developing RESTful APIs with Lumen

目前正在工作,但当我访问我的api

http://example.com/api/accounts/2

它返回

SQLSTATE [42S02]:未找到基表或视图:1146表'youframe.accounts'不存在(SQL:select * from accounts其中accounts.id = 2 limit 1)

我有一个名为Account.php的模型文件

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Account extends Model
{
        protected $fillable = [
                'username', 'email', 'password', 'type' 
        ];

        protected $hidden = [];
}

和一个名为AccountController.php的控制器文件

<?php

namespace App\Http\Controllers;

use App\Account;
use Illuminate\Http\Request;

class AccountController extends Controller
{
        public function getAccount($id, Request $request)
        {
                $this->validate($request, [
                        'token' => 'required'           
                ]);

                return response()->json(Account::find($id), 400);
        }
}

我没有名为accounts的桌子。我唯一的桌子是account,从哪里打电话给accounts

php lumen
1个回答
1
投票

将表名添加到模型中以将模型与后端数据库表关联。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Account extends Model
{
        protected $fillable = [
                'username', 'email', 'password', 'type' 
        ];

        protected $hidden = [];
        protected $table = 'account';
}

如果您没有提及表名,Laravel将假定您的模型名称的复数形式作为表名。有关更多参考,请参阅Eloquent Model Conventions

UPDATE

如果您只想选择某些列,请在您的eloquent查询中使用select命令。

$rows = Account::select(['column_name_1','column_name_2'])->get();

或者如果你想要它们在一个数组中

$rows = Account::select(['column_name_1','column_name_2'])->get()->toArray();
© www.soinside.com 2019 - 2024. All rights reserved.