【问题标题】:table not being set in eloquent model表未在 eloquent 模型中设置
【发布时间】:2015-02-21 02:20:56
【问题描述】:

我在将表格设置为雄辩的模型时遇到了一些问题。我以前做过很多次,但由于某种原因,这似乎不起作用。我在这里完全错过了什么吗?

型号:

class F5Host extends Eloquent {


   protected $guarded = array();
   protected $table = 'f5hosts';


   public function Environments() {
      return $this->belongsTo('Environment');
   }

}

用法:

  $host = new F5Host;
  return $host->all();

错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'myapp.f5_hosts' doesn't exist (SQL: select * from `f5_hosts`)

更新: 我知道 Laravel 有一个功能,可以在使用模型确定数据库表名时将 CamelCase 转换为 snake_case。但是 $table 变量应该覆盖它。我注意到,当突然将类名更改为“F5host”时,覆盖开始起作用了。

【问题讨论】:

  • 确保myapp 数据库包含f5_hosts
  • 模型设置看起来不错。我不确定,但你可以试试F5Host::all() 而不是$host = new F5Host; return $host->all();
  • @Razor f5_hosts 不存在,这就是我尝试将名称更改为“f5hosts”的原因
  • @lukasgeiter 返回相同的结果
  • 好的。你确定这条线会导致错误吗?如果您将其删除/注释掉,它会消失吗?

标签: php laravel laravel-4


【解决方案1】:

创建环境类模型

例子

class Environment extends Eloquent {


   protected $guarded = array();
   protected $table = 'environment';


   public function f5hosts() {
      return $this->hasOne('F5Host');
   }

}

改变关系方法和测试。

对不起:我的英语不好。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2016-11-26
  • 2014-08-23
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
相关资源
最近更新 更多