/** Add the sql to perform a search. * * @param Gdn_SQLDriver $Sql * @param string $Columns a comma seperated list of columns to search on. */ public function AddMatchSql($Sql, $Columns, $LikeRelavenceColumn = '') { if ($this->_SearchMode == 'like') { if ($LikeRelavenceColumn) $Sql->Select($LikeRelavenceColumn, '', 'Relavence'); else $Sql->Select(1, '', 'Relavence'); $Sql->BeginWhereGroup(); $ColumnsArray = explode(',', $Columns); foreach ($ColumnsArray as $Column) { $Column = trim($Column); $Param = $this->Parameter(); $Sql->OrWhere("$Column like $Param", NULL, FALSE, FALSE); } $Sql->EndWhereGroup(); } else { $Boolean = $this->_SearchMode == 'boolean' ? ' in boolean mode' : ''; $Param = $this->Parameter(); $Sql->Select($Columns, "match(%s) against($Param{$Boolean})", 'Relavence'); $Param = $this->Parameter(); $Sql->Where("match($Columns) against ($Param{$Boolean})", NULL, FALSE, FALSE); } }
public function SaveToSerializedColumn($Column, $RowID, $Name, $Value = '') { if (!isset($this->Schema)) { $this->DefineSchema(); } // TODO: need to be sure that $this->PrimaryKey is only one primary key $FieldName = $this->PrimaryKey; // Load the existing values $Row = $this->SQL->Select($Column)->From($this->Name)->Where($FieldName, $RowID)->Get()->FirstRow(); if (!$Row) { throw new Exception(T('ErrorRecordNotFound')); } $Values = Gdn_Format::Unserialize($Row->{$Column}); if (is_string($Values) && $Values != '') { throw new Exception(T('Serialized column failed to be unserialized.')); } if (!is_array($Values)) { $Values = array(); } if (!is_array($Name)) { $Name = array($Name => $Value); } // Assign the new value(s) $Values = Gdn_Format::Serialize(array_merge($Values, $Name)); // Save the values back to the db return $this->SQL->From($this->Name)->Where($FieldName, $RowID)->Set($Column, $Values)->Put(); }
/** * Returns a count of the # of records in the table * @param array $Wheres */ public function GetCount($Wheres = '') { $this->SQL->Select('*', 'count', 'Count')->From($this->Name); if (is_array($Wheres)) { $this->SQL->Where($Wheres); } $Data = $this->SQL->Get()->FirstRow(); return $Data === FALSE ? 0 : $Data->Count; }