【问题标题】:Model not linking to table in laravel php模型未链接到 laravel php 中的表
【发布时间】:2017-08-12 00:04:03
【问题描述】:

我有一个名为任务的表和一个名为任务的模型。当我运行这段代码时,在我的控制器方法中

     <?php

        namespace App\Http\Controllers;

        use DB;
        //use app\Task;
        use DateTime;
        use Illuminate\Http\Request;
        use Illuminate\Support\Facades\Input;

        class Task_Controller extends Controller
        {
        //
             public function decide()
             {

             if ($input=="show all task")
             {
                  //$rows=DB::table('task')->get();
                  $rows=\App\Task::all();
                  foreach($rows as $values)
                  {
                     foreach($values as $key=>$val)
                     echo "$key  :  $val <br>";
                     echo "<br><br>";
                  }
              }
         }

它给了我以下错误: SQLSTATE[HY000]: 一般错误: 1 no such table: tasks (SQL: select * from "tasks")

那是模型应该链接到 task 表而不是链接到 tasks 表为什么??

如何使模型链接到特定的表。

我的模型类代码是这样的

       namespace App;

       use Illuminate\Database\Eloquent\Model;

       class Task extends Model
       {
          //
       }

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.3 laravel-migrations


    【解决方案1】:

    默认情况下,表名是类名的复数。如果你想让它指向不同的表,那么在你的模型中,添加

    protected $table = 'task';
    

    【讨论】:

      【解决方案2】:

      你应该将你的表命名为tasks,这是最好的选择。

      解决此问题的另一种方法是使用$table property

      protected $table = 'task';
      

      请注意,我们没有告诉 Eloquent 将哪个表用于我们的 Flight 模型。按照约定,“snake case”,类的复数名称将用作表名,除非明确指定另一个名称。因此,在这种情况下,Eloquent 将假定 Flight 模型将记录存储在航班表中。您可以通过在模型上定义表格属性来指定自定义表格

      https://laravel.com/docs/5.4/eloquent#defining-models

      【讨论】:

        【解决方案3】:

        默认情况下,laravel 将模型名称复数为表名,除非模型中另有说明。

        protected $table = 'task';

        【讨论】:

          猜你喜欢
          • 2015-09-06
          • 2014-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多