С новым годом. Подскажите как решить.. Есть таблица в БД sql в ней 1 строка,три ключа и их строковые значения. как вывести ее в array? Нужно мапнуть кнопки Код (Text): $buttons = array_map(function($name,$val){ return Keyboard::inlineButton(['text' => $name,'callback_data' => $val]); },array_keys($buttons),array_values($buttons)); $inline = Keyboard::make()->inline(); $keyboard = call_user_func_array([$inline, 'row'], $buttons); если просто взять Код (Text): $buttons = array('1' => '11', '2' => '22', ....); То все работает Но мне надо так?: Код (Text): $buttons = DB::table('buttonsmenu2')->get()->toArray(); все что смог найти перепробовал не работает ни один нагугленный способ. Что я делаю не так? как вывести эти кнопки правильно?
Код (Text): public function up() { // Create table Schema::create('buttonsmenu2', function (Blueprint $table) { $table->increments('id'); $table->string('кнопка1'); $table->string('кнопка2'); $table->string('кнопка3'); }); } просто таблица в ней id и 3 поля ключ => значение хочу ключ засунуть в поле кнопки 'text', а значение в 'callback_data'. с обычной array (tесли просто в ручную прописать аrray типа: $buttons = array('кнопка1' => 'кнопкаa', 'кнопка2' => 'кнопкаb','кнопка3' => 'кнопкаc'); то все работает. Как вывести таблицу buttonsmenu2 вот в таком же виде как в ручную? как это правильно сделать? таблицу создал не в ларе. обращаюсь через use DB (не eloquent если имеет значение). много очень кнопок разных
вот так все работает Код (Text): $buttons = array('Новини' => 'newsss', 'Смартфони' => 'phonsss', 'Повітря' => 'jakistpov' ); $buttons = array_map(function($name,$val){ return Keyboard::inlineButton(['text' => $name,'callback_data' => $val]); },array_keys($buttons),array_values($buttons)); $inline = Keyboard::make()->inline(); $keyboard = call_user_func_array([$inline, 'row'], $buttons); Хочу $buttons заменить на $buttons = DB::table('buttonsmenu2')->get()->toArray(); чтоб было как выше но возникает ошибка: production.ERROR: Bad Request: can't parse inline keyboard button: Field "callback_data" must be of type String Оно ведь итак в стринг... что я делаю не так?
блин, все заредактировал ) ошибка: production.ERROR: Bad Request: can't parse inline keyboard button: Field "callback_data" must be of type String возникает из-за: stdClass в котором возвращается бд запрос $buttons = DB::table('buttonsmenu2')->get()->toArray(); Как получить array
Разобрался, Код (Text): $buttons = DB::table('buttonsmenu2')->first(); $buttons = (array)$buttons ; так норм
Можно еще вопрос... У меня есть переменная в которой всегда число от 1 до 5 (ключи кнопок в бд) Возможно как-то вот етот запрос к бд $buttons = DB::table('buttons')->select('1','2','3'....)->... // выбираю все ключи кроме ключа из переменной сделать динамичным, тоесть выбрать все поля кроме того что в переменной.. что-то типа $buttons = DB::table('buttons')->select('*')->exept($переменная) // это бред, но просто чтоб было понятно что хочу. Это реально?
Неужели всё настолько плохо, в плане базовых знаний?! Впрочем, вот: Database: Query Builder - Laravel - Basic Where Clauses
Я оттуда и пришел.. У меня проблема, вот чесно, перечитал кучу инфы, перепробовал кучу методов и ничего не работает.. Мне изначально надо было этот запрос: $buttons = DB::table('buttons')->get(); вернуть как array.. Ну вот почему вот это: $buttons = DB::table('buttons')->first(); $buttons = (array)$buttons; дает результат в виде '1' => 'knopka1','2' => 'knopka2'... и все прекрасно работает там куда эти кнопки идут. А если так $buttons = DB::table('buttons')->where('1','!=',$переменная)->get(); $buttons = (array)$buttons; то дальше получаю ошибку: Bad Request: can't parse inline keyboard button: Field \"callback_data\" must be of type String. Пробовал перед запросом к бд менять fetch_assoc тоже не работает. Подскажи пожалуйста как $buttons = DB::table('buttons')->where('1','!=',$переменная)->get() этот запрос вернуть как array тобеж так: '1' => 'knopka1','2' => 'knopka2'...
@Qvei, потому что имя поля с кнопкой - не '1', если верить написанному в #3. А если всё-таки используются цифры для именования колонок - в запросе пиши названия колонок с использованием обратного апострофа. `1`