2017-09-18 6 views
0

私はサーバー側からdataTableを実装しようとしていますが、3つの列をソートするのに成功しましたが、2つの列が外部キーであるソートに失敗しました。何が問題なのでしょうか?phpのサーバー側からデータテーブルを実装する際に、外部キーである列をソートする方法はありますか?

私はを使用しています。symfony2.8です。以下のコードでは、クエリを作成し、モデル別名 'Book'を使用してプロパティにアクセスしようとしています。

私のコード:

<?php 

namespace AppBundle\Propel; 

use AppBundle\Model\BookQuery; 
use Symfony\Component\HttpFoundation\Request; 
use UAM\Bundle\DatatablesBundle\Propel\AbstractEntityManager; 

class BookManger extends AbstractEntityManager 
{ 
/** 
* @inheritdoc 
*/ 
protected function getQuery(Request $request) 
{ 
    return BookQuery::create('Book'); 
} 

/** 
* @inheritdoc 
*/ 
protected function getSearchColumns(Request $request) 
{ 
    return array(); 
} 

/** 
* @inheritdoc 
*/ 
protected function getSortColumns(Request $request) 
{ 
    return array(
     'Book.Id', 
     'Book.Title', 
     'Book.Isbn', 
     'Book.Publisher.Id', //this is not working 
     'Book.Author.Id' //this is also not working 

    ); 
} 

/** 
* @inheritdoc 
*/ 
protected function getDefaultSortOrder(Request $request) 
{ 
    return array(
     array('Book.Id', 'asc'), 
     array('Book.Title', 'asc') 
    ); 
} 

のschema.xml

<?xml version="1.0" encoding="UTF-8"?> 
<database name="default" defaultIdMethod="native" namespace="AppBundle\Model"> 
<table name="book" phpName="Book"> 
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
    <column name="title" type="varchar" size="255" required="true" /> 
    <column name="isbn" type="varchar" size="24" required="true" phpName="ISBN"/> 
    <column name="publisher_id" type="integer" required="true"/> 
    <column name="author_id" type="integer" required="true"/> 
    <foreign-key foreignTable="publisher" phpName="Publisher" refPhpName="Book"> 
     <reference local="publisher_id" foreign="id"/> 
    </foreign-key> 
    <foreign-key foreignTable="author"> 
     <reference local="author_id" foreign="id"/> 
    </foreign-key> 
</table> 
<table name="author" phpName="Author"> 
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
    <column name="first_name" type="varchar" size="128" required="true"/> 
    <column name="last_name" type="varchar" size="128" required="true"/> 
</table> 
<table name="publisher" phpName="Publisher"> 
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> 
    <column name="name" type="varchar" size="128" required="true" /> 
</table> 

答えて

1

直接その列名を使用してプロパティにアクセスすることが可能です。 Book.publisher_idとBook.author_idを試してください

+0

うん、それは働いています。ご協力いただきありがとうございます。 – sandy

関連する問題