Thinkphp M方法出错,D方法却可以

错误回顾:

M(‘Local‘)->find();  //报错    //错误信息:Table ‘test.local‘ doesn‘t exist [ SQL语句 ] : SHOW COLUMNS FROM `local`

D(‘Local‘)->find();  //正确

LocalModel.class.php文件内容如下

<?php
namespace Home\Model;

use Think\Model;

class LocalModel extends Model
{
    protected $tableName = ‘user‘;
}

原因:使用M方法的时候,方法名必须和表名称对应,在里面通过tableName指定表明是没有效果的。

    D方法模型文件名称可以和表明没有关系,通过模型属性tableName指定即可。

至于为什么,手册上没明确说明。暂时我也还不清楚

时间: 2024-10-10 10:48:08

Thinkphp M方法出错,D方法却可以的相关文章

(转) ThinkPHP模板自定义标签使用方法

这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发更加快速和简单,使用过dedecms.phpcms等内容管理系统的人应该都知道,cms的前台都是使用模板标签来调用数据.以调用文章列表为例: dedecms可以写成: ? 1 2 3 4 5 <ul> {dede:arclist row='10' orderby='id desc' titlelen='

Thinkphp5.1 insertAll方法出错

Thinkphp5.1 insertAll方法出错,报错信息看字段重复了也就是 本该 INSERT INTO `号码` (`id` , `编组` , `姓名` , `编号`) SELECT 3,'','','' 实际上 INSERT INTO `号码` (id , 编组 , 号码 , 姓名 , 编号 , `id` , `编组` , `姓名` , `编号`) SELECT 3,'','','' 定位出错位置在 \thinkphp\library\think\db\Builder.php P:848

Physics 碰撞检测回调方法出错或者没有效果解决方法

1.碰撞检测回调方法编译出错; auto *listener = EventListenerPhysicsContact::create(); listener->onContactBegin = CC_CALLBACK_1(HelloWorld::onContactBegin,this); 在3.0rc版本中回调函数的参数变为一个,不能使用原来的两个参数; bool HelloWorld::onContactBegin(PhysicsContact& contact) { auto spr

工厂模式的Assembly.Load(path).CreateInstance(className)出错解决方法

1.问题描述 ★代码展示 下面是Factory中的一段代码: '********************************************** ' 文 件 名:DataAcess ' 命名空间:Factory ' 内 容: ' 功 能:创建用户需要的接口 ' 文件关系: ' 作 者:令仔很忙 ' 小 组: ' 生成日期:2014-07-28 17:37:52 ' 版 本 号:V2.0 ' 修改日志: ' 版权说明: '********************************

vs连接mysql出错解决方法

vs连接mysql出错解决方法 先按下面的步骤配置一下: **- (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的"Show directories for:"下拉列表中选中"Includefiles",然后在中间列表框中添加你本地安装MySQL的include目录路径.(我的是D:\Program Files\MySQL\MySQL Server 5.0\include). vs2010中的设置,在:项目-

MVC自我学起之MVCMusic开发中遇到问题:musicstore edit方法出错的原因和解决方法

错误提示: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectStateManager 项. 解决案: 1.在view中或model中增加隐藏id 1.1 修改model [HiddenInput()]public int AlbumId { get; set; } 1.2在视图中增加:(一般 若是用自动新建的curd中会自带) 加@Html.HiddenFor(model => model.AlbumId) 2.得到id也有两种方法一种是修改m

ThinkPHP内置函数----I方法

虽然你仍然可以在开发过程中使用传统方式获取各种系统变量,例如: $id    =  $_GET['id']; // 获取get变量$name  =  $_POST['name'];  // 获取post变量$value =  $_SESSION['var']; // 获取session变量$name  =  $_COOKIE['name']; // 获取cookie变量$file  =  $_SERVER['PHP_SELF']; // 获取server变量 但是我们不建议直接使用传统方式获取,

Windows Server 2012启用Windows功能NetFx3时出错解决方法

作者:冰点阳光 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://baohua.me/operating-system/windows-server-2012-enable-windows-feature-netfx3-error-sulotion/ 在Windows server 2012 R2服务器上安装SQL Server 2012数据库,在安装过程中出现"启用Windows 功能NetFx3时出错,错误代码:-2146498298.请尝试从Wind

2016/05/23 thinkphp M方法和D方法的区别

M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 M方法: 对数据表进行简单的 CURD 操作而无复杂的业务逻辑时 只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用 M方法 甚至可以简单看着就是对参数表名对应的数据表的操作: $User = M('User'); 使用D方法 如果是如下情况,请考虑使

ThinkPHP 跨模块调用操作方法(A方法与R方法)

ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内置了 A方法与 R 方法这两个特殊的大写字母方法来处理跨模块调用的问题. 目前 Index 模块内有 index 操作,User 模块有 showName 操作,User 模块及 showName 操作具体代码如下: <?php class UserAction extends Action{ pu