Microsoft バックエンドで実行されている Northwind データベースの 2 つのエンティティからのデータに対してライブ検索を実行する方法を示すチュートリアル/ビデオに従いました。
バックエンドを持つアプリケーションを開発する必要があるphp / mysql
ため、これを行うためにphpプロデューサークラスを手に入れました。Wordpress DB に接続しましたが、すべて正常に動作しているようです。
ただし、私の問題は、関連するテーブルで検索を実行しようとするときです。displayName
著者(ユーザー エンティティから)post title
とdate
(投稿から)を示すグリッドがあります。
<input type="text" data-ng-model="searchText"/> {{searchText}}
<table class="table table-hover">
<thead>
<tr>
<th>Author </th>
<th>Date</th>
<th>Title</th>
</tr>
</thead>
<tr ng-repeat="post in posts">
<td>{{post.user.displayName}}</td>
<td>{{post.date}}</td>
<td>{{post.title}}</td>
</tr>
</table>
コントローラー (実際には datacontext.js) には、サーバーからデータを取得するための次のものがあります。
if (searchText && (searchText = searchText.trim())) {
log("searching for " + searchText);
var pred = breeze.Predicate
.create('title', 'contains', searchText);
query = query.where(pred);
} else {
console.log("getting all");
}
return manager.executeQuery(query).then(success);
私の問題は、述語のフィールドを正しく参照することです。以下のように Posts title Entity だけを検索するコードを実行すると、正常に動作します。
var pred = breeze.Predicate
.create('title', 'contains', searchText);
次のように変更するとすぐに、動作しなくなります。コンソールにもエラーはありません。
var pred = breeze.Predicate
.create('title', 'contains', searchText)
.or('displayname', 'contains', searchText);
「displayname」、「posts.user.displayname」、「user.displayname」など、「displayName」のいくつかのバリエーションと、キャメルケースのすべてのものも試しました。
誰かが私が間違っている場所を教えてもらえますか?