Laravel Найти строку в массиве в коллекции [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

0
задан Marcin Nabiałek 19 March 2015 в 23:17
поделиться

2 ответа

Трудно понять, чего вы хотите достичь, но я попробую. Прежде всего, как отметил @particus, лучший способ - создать сводную таблицу, когда вам не нужно беспокоиться о таких вещах.

Но решение, если у вас есть список идентификаторов в столбцах, разделенных комой, не сохраняя значения, такие как

1,2,3

, но всегда добавляя , в начале и в конце, поэтому он должен быть в этом случае:

,1,2,3,

Таким образом, если у вас есть в таблице ,19,2,3,, и вы хотите найти значение 9, вы должны использовать поиск строки ,9,, например:

$id = 9; 
$items = Items::where('column', LIKE '%,'.$id.',%')->get();

Теперь для строки выше никакой записи не будет но если у вас есть ,9,2,3, или просто ,9,, то будет найдена нужная запись.

1
ответ дан Marcin Nabiałek 26 August 2018 в 08:43
поделиться

Предполагая, что вы используете MySQL, вы можете использовать функцию FIND_IN_SET.

$items = Items::whereRaw("FIND_IN_SET(".$cat->id.", cats)")->orderBy('updated_at', 'DESC')->get();

Обратите внимание, что это не будет использовать индексы, определенные в столбце кошек. Хранение массива как данных в поле обычно является большим красным флагом. Вы бы выиграли от нормализации этого сейчас, вместо того, чтобы пытаться обойти текущий дизайн.

0
ответ дан patricus 26 August 2018 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: