模型未链接到 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 中的另外两个表