mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-09 16:12:49 +08:00
模型的hasWhere方法增加fields参数
This commit is contained in:
@@ -1780,13 +1780,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $relation 关联方法名
|
* @param string $relation 关联方法名
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Relation|Query
|
* @return Relation|Query
|
||||||
*/
|
*/
|
||||||
public static function hasWhere($relation, $where = [])
|
public static function hasWhere($relation, $where = [], $fields = null)
|
||||||
{
|
{
|
||||||
return (new static())->$relation()->hasWhere($where);
|
return (new static())->$relation()->hasWhere($where, $fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -79,14 +79,16 @@ class BelongsTo extends OneToOne
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
$table = $this->query->getTable();
|
$table = $this->query->getTable();
|
||||||
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
||||||
$relation = basename(str_replace('\\', '/', $this->model));
|
$relation = basename(str_replace('\\', '/', $this->model));
|
||||||
|
|
||||||
if (is_array($where)) {
|
if (is_array($where)) {
|
||||||
foreach ($where as $key => $val) {
|
foreach ($where as $key => $val) {
|
||||||
if (false === strpos($key, '.')) {
|
if (false === strpos($key, '.')) {
|
||||||
@@ -95,8 +97,10 @@ class BelongsTo extends OneToOne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$fields = $this->getRelationQueryFields($fields, $model);
|
||||||
|
|
||||||
return $this->parent->db()->alias($model)
|
return $this->parent->db()->alias($model)
|
||||||
->field($model . '.*')
|
->field($fields)
|
||||||
->group($model . '.' . $this->foreignKey)
|
->group($model . '.' . $this->foreignKey)
|
||||||
->join($table . ' ' . $relation, $model . '.' . $this->foreignKey . '=' . $relation . '.' . $this->localKey, $this->joinType)
|
->join($table . ' ' . $relation, $model . '.' . $this->foreignKey . '=' . $relation . '.' . $this->localKey, $this->joinType)
|
||||||
->where($where);
|
->where($where);
|
||||||
@@ -125,7 +129,7 @@ class BelongsTo extends OneToOne
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($range)) {
|
if (!empty($range)) {
|
||||||
$data = $this->eagerlyWhere($this, [
|
$data = $this->eagerlyWhere($this->query, [
|
||||||
$localKey => [
|
$localKey => [
|
||||||
'in',
|
'in',
|
||||||
$range,
|
$range,
|
||||||
@@ -168,7 +172,7 @@ class BelongsTo extends OneToOne
|
|||||||
{
|
{
|
||||||
$localKey = $this->localKey;
|
$localKey = $this->localKey;
|
||||||
$foreignKey = $this->foreignKey;
|
$foreignKey = $this->foreignKey;
|
||||||
$data = $this->eagerlyWhere($this, [$localKey => $result->$foreignKey], $localKey, $relation, $subRelation, $closure);
|
$data = $this->eagerlyWhere($this->query, [$localKey => $result->$foreignKey], $localKey, $relation, $subRelation, $closure);
|
||||||
// 关联模型
|
// 关联模型
|
||||||
if (!isset($data[$result->$foreignKey])) {
|
if (!isset($data[$result->$foreignKey])) {
|
||||||
$relationModel = null;
|
$relationModel = null;
|
||||||
|
|||||||
@@ -212,11 +212,12 @@ class BelongsToMany extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
throw new Exception('relation not support: hasWhere');
|
throw new Exception('relation not support: hasWhere');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,14 +253,16 @@ class HasMany extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
$table = $this->query->getTable();
|
$table = $this->query->getTable();
|
||||||
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
||||||
$relation = basename(str_replace('\\', '/', $this->model));
|
$relation = basename(str_replace('\\', '/', $this->model));
|
||||||
|
|
||||||
if (is_array($where)) {
|
if (is_array($where)) {
|
||||||
foreach ($where as $key => $val) {
|
foreach ($where as $key => $val) {
|
||||||
if (false === strpos($key, '.')) {
|
if (false === strpos($key, '.')) {
|
||||||
@@ -269,8 +271,11 @@ class HasMany extends Relation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$fields = $this->getRelationQueryFields($fields, $model);
|
||||||
|
|
||||||
return $this->parent->db()->alias($model)
|
return $this->parent->db()->alias($model)
|
||||||
->field($model . '.*')
|
->field($fields)
|
||||||
->group($model . '.' . $this->localKey)
|
->group($model . '.' . $this->localKey)
|
||||||
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey)
|
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey)
|
||||||
->where($where);
|
->where($where);
|
||||||
|
|||||||
@@ -77,10 +77,11 @@ class HasManyThrough extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
throw new Exception('relation not support: hasWhere');
|
throw new Exception('relation not support: hasWhere');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,14 +81,16 @@ class HasOne extends OneToOne
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
$table = $this->query->getTable();
|
$table = $this->query->getTable();
|
||||||
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
$model = basename(str_replace('\\', '/', get_class($this->parent)));
|
||||||
$relation = basename(str_replace('\\', '/', $this->model));
|
$relation = basename(str_replace('\\', '/', $this->model));
|
||||||
|
|
||||||
if (is_array($where)) {
|
if (is_array($where)) {
|
||||||
foreach ($where as $key => $val) {
|
foreach ($where as $key => $val) {
|
||||||
if (false === strpos($key, '.')) {
|
if (false === strpos($key, '.')) {
|
||||||
@@ -97,8 +99,10 @@ class HasOne extends OneToOne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$fields = $this->getRelationQueryFields($fields, $model);
|
||||||
|
|
||||||
return $this->parent->db()->alias($model)
|
return $this->parent->db()->alias($model)
|
||||||
->field($model . '.*')
|
->field($fields)
|
||||||
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $this->joinType)
|
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $this->joinType)
|
||||||
->where($where);
|
->where($where);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,10 +82,11 @@ class MorphMany extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
throw new Exception('relation not support: hasWhere');
|
throw new Exception('relation not support: hasWhere');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,10 +81,11 @@ class MorphOne extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
throw new Exception('relation not support: hasWhere');
|
throw new Exception('relation not support: hasWhere');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,10 +82,11 @@ class MorphTo extends Relation
|
|||||||
/**
|
/**
|
||||||
* 根据关联条件查询当前模型
|
* 根据关联条件查询当前模型
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $where 查询条件(数组或者闭包)
|
* @param mixed $where 查询条件(数组或者闭包)
|
||||||
|
* @param mixed $fields 字段
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function hasWhere($where = [])
|
public function hasWhere($where = [], $fields = null)
|
||||||
{
|
{
|
||||||
throw new Exception('relation not support: hasWhere');
|
throw new Exception('relation not support: hasWhere');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user