模型未链接到 laravel php 中的表

Posted

技术标签:

【中文标题】模型未链接到 laravel php 中的表【英文标题】:Model not linking to table in 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
       
          //
       

【问题讨论】:

【参考方案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';

【讨论】:

以上是关于模型未链接到 laravel php 中的表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel webwizo 简码包 Shortcodes 类未找到

如何将带有前缀列的表连接到 PHP MySQL 或 Laravel 中的另外两个表

Laravel - 使用 Eloquent 从连接关系模型中选择特定列

Laravel 中的模型继承

选择框 laravel 未定义的变量

Laravel 需要 Mcrypt PHP 扩展