亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法循環遍歷表中 json 列中的嵌套對象并使用 Laravel 中的查詢構建器檢查條件?

有沒有辦法循環遍歷表中 json 列中的嵌套對象并使用 Laravel 中的查詢構建器檢查條件?

PHP
慕容3067478 2021-12-03 10:37:04
我有events帶有 json 列的表guests。guests字段的數據如下所示:{"lines":   [{"men":1,     "women":1,     "children":1,     "language_id":291,     "language_name":"test",   }],   [{"men":1,     "women":1,     "children":1,     "language_id":292,     "language_name":"test2",   }], "totalMen":2, "totalWomen":2, "totalChildren":2, "total":6,}我需要使用特定的 language_id 在控制器中獲取事件。但是字段guests內部可以有多個數組lines,所以我需要以某種方式檢查特定語言 ID 的所有行?,F在我這樣做:$language = Language::findOrFail($lid);$events = Event::get();foreach($events as $event) {    foreach($event['guests']['lines'] as $line){        if($line['language_id'] === $language->id) {            // do smth            break;        }    }}有沒有辦法根據我的條件在 laravel 中使用查詢構建器獲取事件,所以我不需要先獲取所有事件,然后再過濾它們?
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您可以使用內置的 Laravel JSON Where Clauses。我認為通過一些播放和一些調試,您可以實現您需要做的事情。

這是使用您的 JSON 架構的示例:

$events = DB::table('events')
                ->where('guests->lines->language_id',  $language->id)
                ->get();


查看完整回答
反對 回復 2021-12-03
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

您可以使用 JSON_EXTRACT mysql 函數。


請關注這篇文章了解更多詳情。 https://database.guide/json_extract-return-data-from-a-json-document-in-mysql/


我正在用核心 PHP 編寫。請相應地定制。


$sql =  "SELECT JSON_EXTRACT(guests, '$.lines') as guest FROM `t1`";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {

    // output data of each row

    while($row = mysqli_fetch_assoc($result)) {

        $json_array = json_decode($row['guest']);

        foreach($json_array as $line) {

            echo "<br>";

            print_r($line->men);

        }

    }

}


查看完整回答
反對 回復 2021-12-03
  • 2 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號