У меня есть этот запрос:
$subcommon= MyModel::selectRaw('subjectlist_id, count(subjectlist_id) AS aggregate') ->whereIn('user_id', [Auth::id(), $user->id]) ->groupBy('subjectlist_id') ->having('aggregate','>',1) ->get();
который дает результат этого запроса:
{"subjectlist_id":1,"aggregate":2} {"subjectlist_id":3,"aggregate":2}
У меня также есть этот запрос:
$values = Mysecondmodel::where('user_id', Auth::id()) ->first();
который дает следующий результат:
{"id":1,"subjectlist_id":1, "article_id":4}
Поскольку им трудно установить эти две модели, я решил вывести их как массивы, поэтому мне хотелось бы, по крайней мере, 1 совпадающее значение для subjectlist_id
в качестве условия для выполнения запроса, который я показывал внизу. Я предполагаю, что это метод arrayintersect
но я не уверен, как его использовать.
$values = Mysecondmodel::where('user_id', Auth::id()) ->first();
У меня это до сих пор:
$subcommonarray = (array) $subcommon; $valuesarray = (array) $values; $a = $subcommonarray; $b = $valuesarray; $c = array_intersect_key($a, $b); if (count($c) > 0) { $newquery = Mysecondmodel::where(user_id, Auth::id()) ->first(); }
Но это, я думаю, сравнивает ключи, а не ценности. Как сопоставить значения и и ключ вместе?
Ну, если $values
и $subcommon
являются действительными массивами, вы можете сравнить их с array_intersect
функции array_intersect
:
$subjectlist_id = array_intersect($values, $subcommon);
Это пойдет и будет искать сходства в значениях и построит еще один массив в переменной $subjectlist_id
всех совпадающих значений между обоими массивами.
Хороший пример из документации php :
$array1 = array(2, 4, 6, 8, 10, 12); $array2 = array(1, 2, 3, 4, 5, 6); $array3 = array_intersect($array1, $array2); var_dump($array3);
У этого был бы такой массив:
array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) }