我已尝试更新this excellent solution of Collin James以使用 Laravel 4 。
直到知道没有运气。这就是我想出的:
/app/libraries/Model.php (我已经使用composer注册了libraries目录)
namespace Elegant;
class Model extends \Illuminate\Database\Eloquent\Model {
function __construct()
{
echo 'Show me if the Model exension works<br />';
}
protected function query()
{
echo 'Show me if the query function gets called<br />';
return new \Elegant\Query($this);
}
}
/app/libraries/Query.php (我已经使用composer注册了libraries目录)
namespace Elegant;
class Query extends \Illuminate\Database\Query {
public function __construct()
{
echo 'Show me if the Query exension works<br />';
}
public function byArray($column, $value)
{
if (is_array($value))
return $this->whereIn($column, $value);
else
return $this->where($column, '=', $value);
}
public function __call()
{
}
}
/app/config/app.php
'aliases' => array(
...
'Eloquent' => 'Elegant\Model',
...
)
唯一有效的是:
其他“标记”不起作用:
答案 0 :(得分:0)
QueryScopes是什么意思? http://laravel.com/docs/eloquent#query-scopes 您可以为查询添加自定义范围。您还可以添加额外的参数,但始终添加$ query(并且是当前查询) 可能类似于:
public function scopeByArray($query, $column, $value)
{
if (is_array($value))
return $query->whereIn($column, $value);
else
return $query->where($column, '=', $value);
}
然后只是User::byArray($column, $value)->orderBy(..)
你可以扩展Eloquent并在那里添加函数(class BaseModel extends Eloquent
)