Lumen QueryException при запуске API - PullRequest
0 голосов
/ 09 сентября 2018

Я изучаю Lumen Framework и читаю этот учебник: Разработка RESTful API с Lumen

В настоящее время работает, но когда я получаю доступ к моему API

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

возвращает

SQLSTATE [42S02]: Базовая таблица или представление не найдены: 1146 Таблица 'youframe.accounts' не существует (SQL: выберите * из accountsгде accounts. id = 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 голосов
/ 09 сентября 2018

Добавьте имя таблицы в вашу модель, чтобы связать вашу модель с таблицей внутренней базы данных.

<?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 .

ОБНОВЛЕНИЕ

. Если вы хотите выбрать только определенные столбцы, используйте команду select в своем красноречивом запросе..

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

ИЛИ, если вы хотите их в массиве

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