Laravel 模型 - 如果数据库表不存在则返回 null

Posted

技术标签:

【中文标题】Laravel 模型 - 如果数据库表不存在则返回 null【英文标题】:Laravel model - return null if the DB table doesn't exist 【发布时间】:2020-06-22 10:21:07 【问题描述】:

创建模型时,我想检查数据库中是否存在该表。如果不是,那么我想返回一个空值。这是为了防止表不存在时插入记录。

在我的模型中我已经尝试过了。 Schema 调用返回 false,但我仍然返回一个模型而不是 null。

class SomeDataTable extends Model

  public function __construct($id)
  
    $this->setTable($id);
    if (Schema::connection($this->connection)->hasTable($this->table) === false) 
      return null;
    else
      parent::__construct();
    
  

  public function setTable($id)
  
    $this->table = $id.'_some_data_table';
  


【问题讨论】:

这不是正确的方法。您必须有模型表。 对,这就是为什么我要在创建模型之前检查表是否存在。 如果你正在创建模型类,你必须有它的表。我正在尝试解决模型可能没有表格的原因 你不能在构造函数中返回null,构造函数用于通过赋值来初始化对象及其属性。当您希望对象变为可为空时。这意味着您要销毁对象或清理资源。 "这是为了防止在表不存在时插入记录。"表不存在肯定不能插入记录。 【参考方案1】:

我不确定您是否正在寻找一种无处不在的解决方案。但我要做的是在终端中执行php aritsan migrate -m 来运行所有模型的迁移。这样,默认情况下会创建所有模型表。

【讨论】:

以上是关于Laravel 模型 - 如果数据库表不存在则返回 null的主要内容,如果未能解决你的问题,请参考以下文章

spark读取hbase数据,如果表存在则不做任何操作,如果表不存在则新建表。

如果表不存在,则插入其他表

访问:如果表不存在则创建表

插入表,如果表不存在,则创建表然后插入

如果存在数组,则需要 Laravel 验证数组元素

表不存在 Sequelize