0

私はこのチュートリアルを進めようとしています: http://www.sitepoint.com/adding-social-network-features-php-app-neo4j/しかし、Silex の代わりに Symfony フレームワークを使用しています。

Symfony で実行するように Neo4j をセットアップすることができ、ユーザー データをグラフに正しく表示することができました。ここで、すべてのユーザーの電子メール アドレスをリストに表示したいと考えています。私はこのスクリプトを取りました:

 public function home(Application $application, Request $request)
    {
        $neo = $application['neo'];
        $q = 'MATCH (user:User) RETURN user';
        $result = $neo->sendCypherQuery($q)->getResult();

        $users = $result->get('user');

        return $application['twig']->render('index.html.twig', array(
            'users' => $users
        ));
    }

そしてそれを読むように適応させました:

   public function showUsersAction()
    {
        $em = $this->container->get('neo4j.manager');
        $query = 'MATCH (n:`User`) RETURN n';
        $users = $em->cypherQuery($query);

        //print_r($users);
        return $this->render('UserBundle:Account:showUsers.html.twig', array('users' =>$users));
    }

小枝は次のようになります。

{% extends '::base.html.twig' %}
{% block content %}
    <h1>get all users:</h1>
    <ul>
    {% for user in users %}
        <li>{{ user.property('email') }}</li>
    {% endfor %}
    </ul>
{% endblock %}

しかし、小枝の何かが間違っているので、エラーが発生します:

Method "property" for object "Everyman\Neo4j\Query\Row" does not exist in UserBundle:Account:showUsers.html.twig at line 6 
4

2 に答える 2

1

twig ファイルの構文に問題が見つかりました。このページを参照した後: https://github.com/jadell/neo4jphp/wiki/Cypher-and-gremlin-queriesuser['n']小枝テンプレートに含める必要があることが明らかになりました。小枝テンプレートは次のようになります。

{% extends '::base.html.twig' %}
{% block content %}
    <h1>get all users:</h1>
    <ul>
    {% for user in users %}
        <li>{{ user['n'].getProperty('email') }}</li>
    {% endfor %}
    </ul>
{% endblock %}
于 2015-07-09T13:40:42.297 に答える
1

私はあなたが言及した記事の著者です。問題は、記事で使用されているものとは異なる neo4j ライブラリを使用しているため、 neoclientであるため、記事で使用されているメソッドは、neo4jphp で提供されているメソッドとは異なります。

NeoClient は Symfony コンポーネントを多用するため、Symfony に統合するのは非常に簡単です。DI をオーバーライドするだけで済みます。ここに例: https://github.com/graphaware/GithubNeo4j/tree/master/src/GraphAware/Neo4jBundle

その後、私が Sitepoint に書いた 3 つの記事に示されている方法を使用できるようになります。

getPropertyしたがって、小枝テンプレートに関するあなたの問題は、neo4jphpがRowオブジェクトクラスを返すため、ノードオブジェクトクラスのメソッドが見つからないことです。

記事のように、neoclient に戻す場合は、Twig テンプレートで次のように記述できます。

{% for user in users %}
   <li>{{ user.getProperty('email') }}</li>
{% endfor %}
于 2015-07-09T16:43:57.050 に答える