redbean - это фантастика, и - getAll просто царапает поверхность и на самом деле совсем не работает с redbean ... Читайте об этом здесь :
Вот шаблон запросадля начала:
Шаблон запроса:
1)
R::getAll('Select * from Join (staff, categories, clients)
On (staff.sid=clients.services.staff_id, categories.cat_id=clients.services.note_category_id)
Where (clients.services.note_date Between :startdate and :enddate,
categories.cat_name IN (:chosencateg), staff.sname IN (:pickednames))
Orderby sname Asc, cat_name Asc, note_date Desc ');
Вы также можете просто использовать:
2)
R::getAll('Select * from Join (staff, categories, clients)
On (staff.sid=clients.services.staff_id, categories.cat_id=clients.services.note_category_id)
Where (clients.services.note_date Between ? and ?,
categories.cat_name IN (?), staff.sname IN (?))
Orderby sname Asc, cat_name Asc, note_date Desc ');
Единственное отличие состоит в том, что шаблон запроса 1 использует именованные параметры (поэтому он будет смотреть на массив параметров, который вы передадите, чтобы он содержал ассоциативный массив с параметрами, названными так же, как и в запросе).В то время как шаблон 2 требует просто массив параметров с индексами, выстроенными в порядке, в котором?отметки появляются в вашем запросе.
В любом случае ... запрос должен возвращать ассоциативный массив ваших столбцов, представляющих строки.var_dump будет выглядеть примерно так:
Array
(
[client_id] => 1,
[client_name] => "joe",
[noes] => "[
{note_id=1
,note_category_id=1
,staff_id=1
,description=blah blah
,content=blah blah blah blah
,content=some content for this note
,note_date=12/06/2018
}
]"
[sid] => 100,
[sname] => "some staff name"
[cat_id] => 100
[cat_name] => "some category name"
)
Обратите внимание, что поле примечаний только что вышло в виде строки (я знаю, что json выше не является правильно сформированным json, я просто пытаюсь показать пример).
Я предполагаю, что вам нужно преобразовать эту строку в массив, чтобы вы могли работать с ней, как если бы это были данные, а не строка.Таким образом, ниже следует начать с этого:
Как только вы удалите его из базы данных, вы сможете получить к нему доступ следующим образом:
$result = R::getAll($query,
['startdate'=> $mystartDate
,'enddate' => $myEndDate
,'chosencateg'=>$myChosenCategory
,'pickednames'=>$myPickedNames
]);
// this would output the json string to your screen
echo $result['notes'];
но похоже, что вы хотитеработать с json, как если бы он был частью ваших данных - так что ... вам нужно сначала его декодировать.
// decode my notes field:
foreach(array_key($result) as $key) {
/* you are working with a multidimensional array in this loop
, use $key to access the row index. Each row index
will contain named column indexes that are column names from the database
*/
$result[$key]['decoded_notes'] = json_decode($result[$key]['notes'],true);
}
// I now have a new column in each row index, containing 'notes'
как другой ассоциативный массив
// the statement below now results in an array to string conversion error:
echo $result[someIndexNumber]['decoded_notes'];