web-dev-qa-db-ja.com

PHP db_select()のページャークエリに左結合を含めるとエラー500

左結合を追加するたびにPHPエラー500を引き起こしているクエリがあります:

PHPの致命的なエラー:非オブジェクトに対するメンバー関数orderBy()の呼び出し

これがクエリです:

_$query = db_select('my_table', 'mt')
         ->extend('PagerDefault')
         ->fields('mt')
         ->fields('u', array('name')
         ->leftJoin('users', 'u', 'u.uid = mt.user_id')
         ->orderBy('mt.my_table_id', 'DESC')
         ->limit($results_per_page);

$result = $query->execute();
_

クエリは、テーブル+ページャーで使用されます。 jeftJoin()とそれぞれのfields()を削除すると、クエリは完全に機能します。なぜこれが起こっているのかについて誰かが光を当てることができますか?

どうもありがとう

1
Dan Murfitt

ドキュメントは言う:

結合は連鎖できないため、別々に呼び出す必要があります(連鎖を参照)。複数の関数をチェーンしている場合は、次のようにします。

$query = db_select('node', 'n');
$query->join('field_data_body', 'b', 'n.nid = b.entity_id');
$query
  ->fields('n', array('nid', 'title'))
  ->condition('n.type', 'page')
  ->condition('n.status', '1')
  ->orderBy('n.created', 'DESC')
  ->addTag('node_access');
5
Enxebre