模型没有链接到laravel php中的表

时间:2017-03-20 15:54:28

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

我有一个名为tasks的表和一个名为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没有这样的表:tasks(SQL:select * from“tasks”)

那就是模型应该链接到任务表,而是链接到任务表为什么??。

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

我的模型类代码是这样的            

       namespace App;

       use Illuminate\Database\Eloquent\Model;

       class Task extends Model
       {
          //
       }

3 个答案:

答案 0 :(得分:4)

您应该为表tasks命名,这是最佳选择。

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

protected $table = 'task';
  

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

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

答案 1 :(得分:2)

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

protected $table = 'task';

答案 2 :(得分:1)

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

protected $table = 'task';