Laravel Model在查询时将MySQL表重命名为复数

时间:2015-12-21 16:21:36

标签: php mysql laravel

我正在使用模型来查询远程MySQL数据库,当我运行查询时,Laravel正在尝试连接到我需要连接的表的复数版本。该表的名称为activity,我得到的错误是:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'health.activities' doesn't exist (SQL: select * from `activities`)

我刚使用artisan make:model Activity为此构建了模型,所以我不确定发生了什么。这是我的模特:

<?php

namespace App;

use DB;
use Role;
use Illuminate\Database\Eloquent\Model;

class Activity extends Model
{
    private $activity;

    function __construct()
    {
        $this->activity = DB::connection('mysql_remote')->table('activity');
    }
}

这是我的控制器:

public function getDashboard()
    {
        $data = [
            'page_title' => 'Dashboard',
            'users'      => User::getUser(),
            'test' => Activity::get(),
        ];

        return view('dashboard.dashboard', $data);
    }

任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:6)

模型希望将表命名为模型名称的复数形式,在这种情况下,Activitiy的复数是activities,它是它所期望的表名。如果不同,则需要添加table属性来设置表的名称。

在您的模型中,添加以下内容......

protected $table = 'activity';