Ниже отображаются:
Марлена имеет 12 картин (что в основном из документов)
Как получить доступ к данным в сборе (Картины)
пример: название
$query = "MATCH (n:Artist)-[:PAINTED]->(Painting) RETURN n.first_name, collect(Painting) as paintings";
$result = $client->run($query);
foreach ($result->getRecords() as $record) {
echo sprintf('%s has %d paintings', $record->value('n.first_name'), count($record->value('paintings')));
echo '<br/>';
}
Я хотел бы отобразить:
Имя исполнителя:
Я предполагаю, что эти данные могут быть получены из живописи или картин. Я просто не уверен, как составить запрос. Он будет отображаться с использованием print_r и записи, поэтому я знаю, что данные поступают.
а) я предлагаю вам псевдоним ваших возвращаемых значений, их проще получить на уровне драйвера
б) Значение записи картины возвращает массив Node
объекты, таким образом, являются итеративными, не нужно считать для выполнения цикла for:
$query = "MATCH (n:Artist)-[:PAINTED]->(Painting) RETURN n.first_name as firstName, collect(Painting) as paintings";
$result = $client->run($query);
foreach($result->records() as $record) {
echo sprintf('%s painted %d paintings', $record->get('firstName'), count($record->get('paintings'))) . PHP_EOL;
foreach ($record->get('paintings') as $painting) {
echo sprintf('%s - %d views', $painting->value('title'), $painting->value('views')) . PHP_EOL;
}
}
Это должно работать для вас:
$query = "MATCH (n:Artist)-[:PAINTED]->(Painting) RETURN n.first_name, collect(Painting) as paintings";
$result = $client->run($query);
foreach ($result->getRecords() as $record) {
echo sprintf('%s has %d paintings:<br/>', $record->value('n.first_name'), count($record->value('paintings')));
foreach ($record->value('n.paintings') as $painting) {
echo sprintf('- %s<br/>', $painting->value('title'));
}
echo '<br/>';
}
Я закончил тем, что заставил это работать со следующим:
foreach ($result->getRecords() as $record) {
$fname = $record->values()[0]->get('first_name');
$lname = $record->values()[0]->get('last_name');
echo '<strong>'.$fname.' '.$lname.' painted:</strong><br/>';
for ($x = 0; $x < count($record->values()[1]); $x++) {
print_r($record->values()[1][$x]->get('title'));
echo ' - ';
print_r($record->values()[1][$x]->get('views'));
echo ' views<br/>';
}
echo '<br/>';
}
Который обеспечивает следующий вывод:
Имя Фамилия нарисована:
Финальные заметки
Я на самом деле пробовал код, подобный тому, что вы предлагали во время моей борьбы, чтобы это заработало. Я немного запутался, почему это не так.
Так что мне осталось интересно. Является ли то, что я придумаю приемлемым?