模型未链接到 laravel php 中的 table

Model not linking to table in laravel php

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

     <?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 没有这样的 table: 任务 (SQL: select * 来自 "tasks")

即模型应该链接到 任务 table 而不是它链接到 任务 table 为什么??.

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

我的模型 class 代码是这样的

       namespace App;

       use Illuminate\Database\Eloquent\Model;

       class Task extends Model
       {
          //
       }

默认情况下,table 名称是 class 名称的复数形式。如果您希望它指向不同的 table,则在您的模型中添加

protected $table = 'task';

您应该将您的 table 命名为 tasks,这是最佳选择。

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

protected $table = 'task';

Note that we did not tell Eloquent which table to use for our Flight model. By convention, the "snake case", plural name of the class will be used as the table name unless another name is explicitly specified. So, in this case, Eloquent will assume the Flight model stores records in the flights table. You may specify a custom table by defining a table property on your model

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

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

protected $table = 'task';