Search code examples
phpsqllaravelselect

Laravel raw query does not work


I'm updating an old application to php and one of the crazy things is about one function which is getting an SLQ statement kept in the DB.. something like

field1 (SearchOrderLetterID), field2 (ShortName), field3 (SQLstatement) 1

When I'm getting the sql to execute, I'm getting the next error "Cannot access empty property"

Example of query:

SELECT CONVERT(VARCHAR(10),ClosingDate,101) 
FROM dbo.Orders WHERE OrderID = @OrderID

Here is my code

public function getGenerateLetter($letterID, $orderID) {
    $letterFields = SearchOrderLetterParameter::where('SearchOrderLetterID', $letterID)->get();
    foreach($letterFields as $letterField) {
        $key = str_replace('##', '', $letterField->ShortName);

        if(preg_match('/@OrderID/', $letterField->SQLstatement))
            $query = str_replace('@OrderID', $orderID, $letterField->SQLstatement);

        $data[$key] = DB::select(DB::raw($query)); //here I'm getting the error
    }
}

Each row in DB has a different SQL Statement

How can I get the result of the query?


Solution

  • You should give an alias for this expression

    CONVERT(VARCHAR(10),ClosingDate,101)
    

    in this manner:

    CONVERT(VARCHAR(10),ClosingDate,101) AS ClosingDate