目前情况:我们正在为新注册创建新数据库。
问题:如果在数据库迁移中做了任何更改,我们需要为以前创建的数据库处理它。或者为每个以前创建的数据库运行该迁移。
如果我们对每个数据库运行迁移,则没有问题。
问题:如何检查数据库表中是否有我们在查询中应用条件列。
目前,我需要首先对第一行执行两个查询,检查该列是否存在,然后在where子句中应用条件,如下所示
$firstRow = Model::first();
if(isset($firstRow->is_splited)){
$records = Model::where('is_splited',0)->get(); // this will give error if I don't check column existence for previously created database.
}else{
$records = Model::all();
}
有没有什么方法可以在一次查询中实现。或者有没有更好的方法可以做到呢?
- 感谢您的时间和建议 *
6条答案
按热度按时间jbose2ul1#
这里很晚,但一个简单而快速的解决方案
oug3syen2#
@DigitalDrifter给出了一个使用
Schema
类的想法,所以我就这样尝试了I包含
Schema
类并使用
Schema
类检查列,同样有效1dkrff033#
更新了在5.8中运行的解决方案
这个解决方案只需要一个$object和一个'column_name'就可以工作。连接和表名都是从对象本身派生的。
oo7oh9g94#
可以执行以下操作来获取Column类的数组:
还有getColumnListing和hasColumn。
pzfprimi5#
如果所有列都设置在
fillable
和hidden
属性中,则可以使用fillable
和hidden
属性来完成此操作。它为我工作✔️
dgsult0t6#
还有一种方法很短,并且可以很好地与多个连接一起使用(因为您直接从模型中获取):