我的表item
有一个JSON列sku_purchase_price
。有一些像这样的行:
我试图通过Eloquent从DB中检索这些行:
$items = Item::where('sku_purchase_price', '[]')->get();
但它会返回一个零结果的集合。
那么,如何通过Eloquent从DB中检索那些行?
答案 0 :(得分:0)
如果您的代码库中插入了 空数组 ,那么您的代码库中就会出现一些不太正确的内容。
你需要找到插入到这个表中的代码并检查是否有一个空数组正在创建,如果有,传递一个空字符串,如果它已经没有了不是必填字段。
但是如果你想使用Eloquent选择它们,你会这样做:
$items = Item::where('sku_purchase_price', '\[\]')->get();
但是,不要这样做,首先在代码中找到实际问题而不是尝试从数据库中选择空数组...
答案 1 :(得分:0)
您可以像这样使用Illuminate\Database\Query\Builder::whereJsonLength
:
$items = Item::whereJsonLength('sku_purchase_price', 0)->get();
这仅适用于MySQL 5.7,PostgreSQL,SQL Server 2016和SQLite 3.9.0 (带有JSON1 extension)。