Hi All,
So I'm a bit stuck on the above and I keep getting an sql server error. Yes
I'm using mssql server :| - not my database.
A little background, my relationships concerned look like this:
AssetMaintenanceRecord->(belongs to)->Asset->(belongs to)->Project->(has
one)->ProjectManager
(note ProjectManager is like an alias model for a personnel table. The
project table has an id for ProjectManager which is just the personnel id.
So I'm trying to do a simple filter whereby I select all the
AssetMaintenanceRecords by a search on ProjectManager.
The related index function in AssetMaintenanceRecordsController.php looks
like:
public function index() {
> $conditions = NULL;
> if (isset($this->params['url']['report']) &&
> $this->params['url']['report'] == 'open') {
> $conditions[] = array('CompletedDate' => NULL);
> }
>
> if (isset($this->params['url']['report']) &&
> $this->params['url']['report'] == 'notified') {
> $conditions[] = array('NotifiedDate BETWEEN ? AND ?' =>
> array(date('M d Y g:iA', strtotime($this->params['url']['datefrom'])),
> date('M d Y g:iA', strtotime($this->params['url']['dateto']))));
> }
>
> if (isset($this->params['url']['report']) &&
> $this->params['url']['report'] == 'completed') {
> $conditions[] = array('CompletedDate BETWEEN ? AND ?' =>
> array(date('M d Y g:iA', strtotime($this->params['url']['datefrom'])),
> date('M d Y g:iA', strtotime($this->params['url']['dateto']))));
> }
>
> if (isset($this->params['url']['project'])) {
> $conditions[] = array('Asset.aCurrProject' =>
> $this->params['url']['project']);
> }
>
> if (isset($this->params['url']['ptCode']) &&
> $this->params['url']['ptCode'] != NULL) {
> $conditions[] = array('Asset.ptCode' =>
> $this->params['url']['ptCode']);
> }
>
> if (isset($this->params['url']['asset']) &&
> $this->params['url']['asset'] != NULL) {
> $conditions[] = array('Asset.aFullCode' =>
> $this->params['url']['asset']);
> }
>
> if (isset($this->params['url']['pm']) &&
> $this->params['url']['pm'] != NULL) {
> $pm_search_terms = explode(' ', $this->params['url']['pm']);
> foreach($pm_search_terms as $pm_search_term) {
> $conditions[] = array(
> 'OR' => array(
> 'ProjectManager.PerGivenName LIKE'
> =>'%'.$pm_search_term.'%',
> 'ProjectManager.PerSurname LIKE'
> =>'%'.$pm_search_term.'%',
> )
> );
> }
> }
>
> $this->paginate['AssetMaintenanceRecord'] = array(
> 'contain' => array(
> 'Asset' => array(
> 'Project' => array(
> 'ProjectManager'
> ))
> ),
> 'order' => 'CompletedDate ASC',
> 'limit' => 10
> );
>
> $planttype =
> $this->AssetMaintenanceRecord->Asset->PlantType->find('list');
> $this->set(compact('planttype'));
> $this->AssetMaintenanceRecord->recursive = -1;
> $this->set('records', $this->paginate('AssetMaintenanceRecord',
> $conditions));
> }
>
Without the ProjectManager filter it works fine and I can echo out the
ProjectManager array etc. but when I enter in a search term I get this
error:
The multi-part identifier "ProjectManager.PerSurname" could not be bound.
>
The executed sql looks like:
'SELECT TOP 10 [AssetMaintenanceRecord].[MtceRegID] AS
> [AssetMaintenanceRecord__0], [AssetMaintenanceRecord].[AssetID] AS
> [AssetMaintenanceRecord__1],
> CAST(CAST([AssetMaintenanceRecord].[MtceRegNote] AS VARCHAR(8000)) AS TEXT)
> AS [AssetMaintenanceRecord__2], [AssetMaintenanceRecord].[POno] AS
> [AssetMaintenanceRecord__3],
> CAST(CAST([AssetMaintenanceRecord].[NotifiedDate] AS VARCHAR(8000)) AS
> TEXT) AS [AssetMaintenanceRecord__4],
> CAST(CAST([AssetMaintenanceRecord].[CompletedDate] AS VARCHAR(8000)) AS
> TEXT) AS [AssetMaintenanceRecord__5],
> [AssetMaintenanceRecord].[MtceRegTitle] AS [AssetMaintenanceRecord__6],
> CAST(CAST([AssetMaintenanceRecord].[CreatedDate] AS VARCHAR(8000)) AS TEXT)
> AS [AssetMaintenanceRecord__7], [AssetMaintenanceRecord].[CreatedUserID] AS
> [AssetMaintenanceRecord__8],
> CAST(CAST([AssetMaintenanceRecord].[ModifiedDate] AS VARCHAR(8000)) AS
> TEXT) AS [AssetMaintenanceRecord__9],
> [AssetMaintenanceRecord].[ModifiedUserID] AS [AssetMaintenanceRecord__10],
> [Asset].[aID] AS [Asset__11], [Asset].[ptCode] AS [Asset__12],
> [Asset].[aNo] AS [Asset__13], [Asset].[aFullCode] AS [Asset__14],
> [Asset].[aDesc] AS [Asset__15], [Asset].[aMake] AS [Asset__16],
> [Asset].[aModel] AS [Asset__17], [Asset].[aSerialNo] AS [Asset__18],
> [Asset].[aRegNo] AS [Asset__19], CAST(CAST([Asset].[aRegExpDate] AS
> VARCHAR(8000)) AS TEXT) AS [Asset__20], [Asset].[aActive] AS [Asset__21],
> [Asset].[aIncAssetRpt] AS [Asset__22], [Asset].[aIncFinanceRpt] AS
> [Asset__23], [Asset].[aIsTrailer] AS [Asset__24], [Asset].[aIsSurveyEquip]
> AS [Asset__25], [Asset].[aCostedItem] AS [Asset__26],
> [Asset].[aCostedPeriod] AS [Asset__27], [Asset].[aWarrantyPeriod] AS
> [Asset__28], [Asset].[aPONo] AS [Asset__29], CAST(CAST([Asset].[aPODate] AS
> VARCHAR(8000)) AS TEXT) AS [Asset__30], CAST(CAST([Asset].[aPOCostExGst] AS
> VARCHAR(8000)) AS TEXT) AS [Asset__31], [Asset].[aQtyStock] AS [Asset__32],
> [Asset].[aQtyInUse] AS [Asset__33], [Asset].[aCurrProject] AS [Asset__34],
> [Asset].[aCurrOperator] AS [Asset__35], [Asset].[aStolen] AS [Asset__36],
> CAST(CAST([Asset].[aStolenDate] AS VARCHAR(8000)) AS TEXT) AS [Asset__37],
> [Asset].[aWO] AS [Asset__38], CAST(CAST([Asset].[aWODate] AS VARCHAR(8000))
> AS TEXT) AS [Asset__39], [Asset].[aSold] AS [Asset__40],
> CAST(CAST([Asset].[aSoldDate] AS VARCHAR(8000)) AS TEXT) AS [Asset__41],
> CAST(CAST([Asset].[aSoldPrice] AS VARCHAR(8000)) AS TEXT) AS [Asset__42],
> CAST(CAST([Asset].[aNotes] AS VARCHAR(8000)) AS TEXT) AS [Asset__43],
> CAST(CAST([Asset].[LastModDate] AS VARCHAR(8000)) AS TEXT) AS [Asset__44],
> CAST(CAST([Asset].[CreatedDate] AS VARCHAR(8000)) AS TEXT) AS [Asset__45],
> [Asset].[aCat] AS [Asset__46], [Asset].[aPoliceRptNo] AS [Asset__47],
> [Asset].[aRelatedAssetID] AS [Asset__48], [Asset].[aRelatedAssetFullCode]
> AS [Asset__49], [Asset].[aPayMethod] AS [Asset__50], [Asset].[aInvoiceNo]
> AS [Asset__51], CAST(CAST([Asset].[aLastFuelDate] AS VARCHAR(8000)) AS
> TEXT) AS [Asset__52], [Asset].[aFuelType] AS [Asset__53] FROM
> [tbMtceRegister] AS [AssetMaintenanceRecord] LEFT JOIN [tbAsset] AS [Asset]
> ON ([AssetMaintenanceRecord].[AssetID] = [Asset].[aID]) WHERE
> [CompletedDate] IS NULL AND [Asset].[aCurrProject] IS NULL AND
> (([ProjectManager].[PerGivenName] LIKE '%test%') OR
> ([ProjectManager].[PerSurname] LIKE '%test%')) ORDER BY [CompletedDate]
> ASC'
>
Looks ok to me but I'm obviously going wrong somwhere?
Any help appreciated.
Thanks,
-Brett
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
Visit this group at http://groups.google.com/group/cake-php?hl=en.