ورود

View Full Version : جستجو در ستون json



majidbayat
جمعه 28 آذر 1399, 21:46 عصر
سلام دوستان
فرض کنید چنین جدولی داریم



column1
id


["1","2","3"]
1


["1","2"]
2


["1"]
3


["2","3"]
4




اگر بخواهیم سطرهایی که در اونها 1و2 وجود داره ( اسمش رو میذارم x ) رو پیدا کنیم باید از کد زیر استفاده کنیم


select * from `Test_table` where json_contains(`column1`, "["1","2"]")


یا


select * from `Test_table` where `column1` like "%1%" and `column1` like "%2%"


یا در لاراول


$test = Test::whereNotNull( 'id' );
foreach ( $x as $key ) {
$test->where( 'column1', 'like', "%$key%" );
}
$test->get();



نوع دیگر لاراول


$test = Test::whereNotNull( 'id' );
$test->whereJsonContains( 'column1', $x );
$test->get();





id
column1


1
["1","2","3"]


2
["1","2"]



چیزی که من احتیاج دارم دقیقا برعکسه، یعنی قصد دارم سطرهایی رو پیدا کنم که مقدار اون سلول در x یا همون 1و2 وجود داشته باشه یعنی جواب جستجو بصورت زیر باشه


id
column1


2
["1","2"]


3
["1"]


کسی راه حل رو بلده؟

majidbayat
یک شنبه 30 آذر 1399, 14:39 عصر
سلام
جواب راحت تر از اون چیزی بود که فکر میکردم

فقط کافیه در تابع json_contains جای دو پارامتر رو عوض کنیم

البته این کار در داخل برنامه php my admin انجام شده و در تابع whereJsonContains لاراول جواب نمیده