php - 检查 Laravel 模型表中是否存在列,然后应用条件
问题描述
当前情况:我们正在为新注册创建新数据库。
问题:如果在数据库迁移中进行了任何更改,我们需要为之前创建的数据库处理它。或者为每个先前创建的数据库运行该迁移。
如果我们为每个数据库运行迁移没有问题。
问题:如何检查数据库表是否有我们在查询中应用条件的列。
目前我需要首先为第一行触发两个查询并检查该列的存在,然后在 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();
}
有什么方法可以在一个查询中实现。或者有什么更好的方法吗?
感谢您的时间和建议。
解决方案
@DigitalDrifter 提出了使用Schema
类的想法,所以我只是这样尝试
我包括Schema
类
use Illuminate\Support\Facades\Schema;
并通过使用Schema
类检查列,它也有效
$isColExist = Schema::connection("connection_name")->hasColumn('table_name','is_splited');
$q = Acquire::with("block");
if($isColExist){
$q->where('is_splited',0);
}
$records = $q->get();
推荐阅读
- python - 如何定义仅超类的方法?
- ios - 如何添加暂存/测试 Apple 服务器通知 url 以在应用程序信息中进行测试?
- c# - 类不是 AvaloniaProperty
- android - 如何使 RippleEffect 不会在 Android 中嵌套的可点击 ConstraintLayouts 内的不可点击/禁用的自定义 ViewGroups 上触发?
- python - 我可以使用标准差来比较两组图像吗?
- jestjs - 如何在角度和笑话的条件下修复发现分支
- php - 使用 php 和 PDF2Text 或 pdf-to-text (spatie) 读取 pdf
- java - 是否有一个函数可以在 Java 中查找按钮内的文本将占用任何字体大小、样式等的空间量?
- javascript - 类型错误:历史未定义
- blazor - 是否有一种模拟 html 元素上的单击事件的 blazor 方式?