2017-01-18 2 views
2

Так что я использую пакет Forms & HTML, и у меня возникают некоторые трудности с выдачей данных. Например:Получение данных json в textarea с использованием коллекции Laravel HTML

, когда я использую этот код:

{!! Form::model($article) !!} 
    {!! Form::textarea('categories', null) !!} 
{!! Form::close() !!} 

То, что я хочу добиться здесь, чтобы перечислить все категории, что эта статья относится. Как это:

<textarea name="categories"> 
    Cat1 
    Cat2 
    Cat5 
</textarea> 

Но, я не знаю, как я могу сказать, форму для вывода только определенный столбец, так что происходит, что textarea заполняется данными JSON (который включает в себя все строки) ,

Я знаю, что лучшим решением является создание множественного селектора, но в этом случае - я должен использовать textarea.

+0

Можете ли вы сделать в простых тегах html, а затем с помощью php перечислить все категории? – EddyTheDove

+0

@EddyTheDove Я не могу этого сделать, потому что форма, которую я использую, используется как для создания, так и для обновления ресурсов. –

+0

Хорошо. Я понимаю. Но вы все равно можете использовать форму, как вы сейчас используете, и делать это только в текстовом поле. Я могу показать вам пример кода, если вы хотите. – EddyTheDove

ответ

1

Попробуйте это:

{!! Form::textarea('categories', implode('\n', $article->categories()->select('colName') 
     ->get()->pluck('colName')->all()) !!} 

Заменить ColName с именем столбца вы хотите

+0

Ваш выбор извлечения не имеет смысла. сначала u выберите нужный столбец, а затем u получите его, а затем выкрутите его, что не нужно, а затем выберете все строки. –

+0

'Вы попробовали команду?'Сначала я выбираю только один столбец (чтобы свести к минимуму вывод SQL), тогда я получаю коллекцию, затем я вырываю имя столбца из коллекции (она теряет структуру значений ключа), затем я конвертирую это в массив (используя all()), затем я буду размывать массив для новых вставок строк. Теперь ты понимаешь? – Paras

+0

Во-первых, без вырезывания (который, как вы говорите, не требуется) коллекция при преобразовании в массив будет в форме ключа, которую вы не хотите. Во-вторых, я не извлекаю все строки, все() здесь используются для преобразования коллекции в массив. Запрос уже был запущен перед вызовом all() на этапе get() – Paras

1

Для того, чтобы поля формы, доступные быть включены как в виде обновления (Form::model) и в создании формы (Form::open), я сделал что-то вроде этого:

{!! Form::textarea('categories', isset($article) ? implode(PHP_EOL, $article->categories()->pluck('name')->toArray()) : null) 

то, что я там был первый Проверяется $article существует. Если это так, значит, я использовал Form::model. когда существует $article, я получаю список категорий как массив и вставляю в PHP_EOL ("\ n").

Но если нет $article, это означает, что форма должна быть формой создания, поэтому данные будут пустыми.

Я придумал это решение благодаря парам. Но даже наши результаты одинаковы, запрос к этим результатам отличается.

Мой результат запроса был:

select `display_name` from `categories` inner join `article_categories` on `categories`.`id` = `article_categories`.`category_id` where `article_categories`.`article_id` = ? 

результат запроса PARAS' является:

select `display_name`, `article_categories`.`article_id` as `pivot_article_id`, `article_categories`.`category_id` as `pivot_category_id` from `categories` inner join `article_categories` on `categories`.`id` = `article_categories`.`category_id` where `article_categories`.`article_id` = ? 

Оба запросов одинаковы, но это выглядит мой запрос немного меньше, так что я Пойдем с этим запросом.

+0

Хорошая работа над сравнением sql. Теперь, когда вы напечатали оба запроса, я думаю, что прямой отрыв может быть немного лучше в производительности. Спасибо, что дали мне знать! Это должен быть правильный ответ, новат – Paras

+0

@Paras спасибо, очень признателен :) –

Смежные вопросы