运行API时流明QueryException

时间:2018-09-09 15:41:25

标签: php lumen

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

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

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

它返回

  

SQLSTATE [42S02]:未找到基表或视图:1146表   “ youframe.accounts”不存在(SQL:从accounts中选择*,其中   accountsid = 2个限制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

1 个答案:

答案 0 :(得分: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

更新

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

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

或者如果您希望将它们放在数组中

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