1

find() 和 findBySql() 都返回一个所有属性连接在一起的字符串,这对我来说不是很有用。

        $customers = Customer::model()->find("
            CONCAT( fName, ' ', lName ) LIKE  ?
            ", array( '%' . $searchVal . '%'));

我怎样才能得到一些有用的东西,比如对象或数组,所以我可以做这样的事情?

        $str = '';
        foreach ($customers as $customer){
            $str .= "<option>" . $customer->fName . " " . $customer->lName . "</option>" ;
        }
4

3 回答 3

4

没有人被切除脑叶。事实上,有几个函数可以用来查询数据库,它们在不同的场景中都有用。

find() returns the first row satisfying the specified condition
findByPk() returns the row with the specified primary key
findByAttributes() returns the first row using the specified SQL statement
findBySql() returns the first row using the specified SQL statement
findAll() returns all rows satisfying the specified condition
findAllByPk() returns all rows with the specified primary keys
findAllByAttributes() returns all rows with the specified attribute values
findAllBySql() returns all rows using the specified SQL statement

所有这些功能都有其用途,只需使用适合您场景的功能即可。

于 2013-10-05T19:54:04.000 回答
0

尝试 FindAll() 而不是 find()。find() 用于单个结果。

    $customers = Customer::model()->findAll("
        CONCAT( fName, ' ', lName ) LIKE  ?
        ", array( '%' . $searchVal . '%'));
于 2013-10-05T19:27:55.497 回答
0

find 返回第一个对象 findAll 返回与条件匹配的所有对象的列表...只需使用您需要的...它们不返回字符串

于 2013-10-06T12:04:42.127 回答