Laravel Eloquent:使用JSON列密钥从数据库中获取对象

时间:2017-07-18 13:27:15

标签: php laravel laravel-5 orm eloquent

我尝试使用以下代码使用testId列从我的订阅表中检索整个订阅对象。 testId列被声明为" json"类型但实际上,此列的内容是一个包含单个字符串的数组,如下所示:

 ["51602a95-73d1-4c24-b3b3-eee288b427e4"]

我尝试使用此代码获取订阅对象但不起作用。如何通过将testId的值搜索到数组中来adpat这段代码来获取订阅对象?

function getSubscriptionByTestId($testId) {
   $subscription = Subscription::where('testId', $testId)->first();
   return $subscription;
}

2 个答案:

答案 0 :(得分:2)

如果所有值都像["51602a95-73d1-4c24-b3b3-eee288b427e4"],具体取决于您可以使用的数据库引擎:

$subscription = Subscription::where('testId','like', "%$testId%")->first();

答案 1 :(得分:0)

您可以使用原始查询尝试以下操作。我还不确定如何用Eloquent解决这个问题,但会进一步调查。

    return DB::select(
      "SELECT * FROM subscription
      WHERE testId->\"$[0]\" = \"{$testId}\""        
    );