mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 23:22:48 +08:00
注释完善
This commit is contained in:
@@ -333,7 +333,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
* 判断一个字段名是否为主键字段
|
* 判断一个字段名是否为主键字段
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $key 名称
|
* @param string $key 名称
|
||||||
* @return void
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function isPk($key)
|
protected function isPk($key)
|
||||||
{
|
{
|
||||||
@@ -392,11 +392,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = self::db();
|
$result = self::db()->where($where)->update($this->data);
|
||||||
if (!empty($where)) {
|
|
||||||
$db->where($where);
|
|
||||||
}
|
|
||||||
$result = $db->update($this->data);
|
|
||||||
|
|
||||||
// 更新回调
|
// 更新回调
|
||||||
$this->trigger('after_update', $this);
|
$this->trigger('after_update', $this);
|
||||||
@@ -501,7 +497,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* 自动验证当前数据对象值
|
* 自动验证当前数据对象值
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function validateData()
|
public function validateData()
|
||||||
{
|
{
|
||||||
@@ -596,10 +592,10 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
* @param array $data 数据数组
|
* @param array $data 数据数组
|
||||||
* @return integer
|
* @return integer
|
||||||
*/
|
*/
|
||||||
public static function update($data = [])
|
public static function update($data = [], $where = [])
|
||||||
{
|
{
|
||||||
$model = new static();
|
$model = new static();
|
||||||
return $model->isUpdate(true)->save($data);
|
return $model->isUpdate(true)->where($where)->save($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -663,7 +659,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
* 命名范围
|
* 命名范围
|
||||||
* @access public
|
* @access public
|
||||||
* @param string|Closure $name 命名范围名称 逗号分隔
|
* @param string|Closure $name 命名范围名称 逗号分隔
|
||||||
* @return Db
|
* @return Model
|
||||||
*/
|
*/
|
||||||
public static function scope($name, $params = [])
|
public static function scope($name, $params = [])
|
||||||
{
|
{
|
||||||
@@ -683,7 +679,12 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析模型的完整命名空间
|
/**
|
||||||
|
* 解析模型的完整命名空间
|
||||||
|
* @access public
|
||||||
|
* @param string $model 模型名(或者完整类名)
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
protected function parseModel($model)
|
protected function parseModel($model)
|
||||||
{
|
{
|
||||||
if (false === strpos($model, '\\')) {
|
if (false === strpos($model, '\\')) {
|
||||||
@@ -695,7 +696,12 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询当前模型的关联数据
|
/**
|
||||||
|
* 查询当前模型的关联数据
|
||||||
|
* @access public
|
||||||
|
* @param string|array $relations 关联名
|
||||||
|
* @return Model
|
||||||
|
*/
|
||||||
public function relation($relations)
|
public function relation($relations)
|
||||||
{
|
{
|
||||||
if (is_string($relations)) {
|
if (is_string($relations)) {
|
||||||
@@ -707,20 +713,27 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 预载入关联查询
|
/**
|
||||||
|
* 预载入关联查询 返回数据集
|
||||||
|
* @access public
|
||||||
|
* @param array $resultSet 数据集
|
||||||
|
* @param string $relation 关联名
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function eagerly($resultSet, $relation)
|
public function eagerly($resultSet, $relation)
|
||||||
{
|
{
|
||||||
$relations = explode(',', $relation);
|
$relations = explode(',', $relation);
|
||||||
|
|
||||||
// 获取关联外键列表
|
|
||||||
foreach ($relations as $relation) {
|
foreach ($relations as $relation) {
|
||||||
$range = [];
|
$range = [];
|
||||||
$data = [];
|
$data = [];
|
||||||
$model = $this->$relation();
|
$model = $this->$relation();
|
||||||
list($type, $foreignKey, $localKey) = $this->relation;
|
list($type, $foreignKey, $localKey) = $this->relation;
|
||||||
foreach ($resultSet as $result) {
|
foreach ($resultSet as $result) {
|
||||||
|
// 获取关联外键列表
|
||||||
$range[] = $result->$localKey;
|
$range[] = $result->$localKey;
|
||||||
}
|
}
|
||||||
|
// 预载入关联查询
|
||||||
$list = $model::where($foreignKey, 'in', $range)->select();
|
$list = $model::where($foreignKey, 'in', $range)->select();
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case self::HAS_ONE:
|
case self::HAS_ONE:
|
||||||
@@ -736,6 +749,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 关联数据封装
|
||||||
foreach ($resultSet as &$result) {
|
foreach ($resultSet as &$result) {
|
||||||
if (isset($data[$result->$localKey])) {
|
if (isset($data[$result->$localKey])) {
|
||||||
$result->$relation = $data[$result->$localKey];
|
$result->$relation = $data[$result->$localKey];
|
||||||
@@ -746,7 +760,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
return $resultSet;
|
return $resultSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
// HAS ONE
|
/**
|
||||||
|
* HAS ONE 关联定义
|
||||||
|
* @access public
|
||||||
|
* @param string $model 模型名
|
||||||
|
* @param string $foreignKey 关联外键
|
||||||
|
* @param string $localKey 关联主键
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function hasOne($model, $foreignKey = '', $localKey = '')
|
public function hasOne($model, $foreignKey = '', $localKey = '')
|
||||||
{
|
{
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
@@ -762,7 +783,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BELONGS TO
|
/**
|
||||||
|
* BELONGS TO 关联定义
|
||||||
|
* @access public
|
||||||
|
* @param string $model 模型名
|
||||||
|
* @param string $foreignKey 关联外键
|
||||||
|
* @param string $localKey 关联主键
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function belongsTo($model, $localKey = '', $foreignKey = '')
|
public function belongsTo($model, $localKey = '', $foreignKey = '')
|
||||||
{
|
{
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
@@ -777,7 +805,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// HAS MANY
|
/**
|
||||||
|
* HAS MANY 关联定义
|
||||||
|
* @access public
|
||||||
|
* @param string $model 模型名
|
||||||
|
* @param string $foreignKey 关联外键
|
||||||
|
* @param string $localKey 关联主键
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function hasMany($model, $foreignKey = '', $localKey = '')
|
public function hasMany($model, $foreignKey = '', $localKey = '')
|
||||||
{
|
{
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
@@ -793,7 +828,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BELONGS TO MANY
|
/**
|
||||||
|
* BELONGS TO MANY 关联定义
|
||||||
|
* @access public
|
||||||
|
* @param string $model 模型名
|
||||||
|
* @param string $foreignKey 关联外键
|
||||||
|
* @param string $localKey 关联主键
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function belongsToMany($model, $localKey = '', $foreignKey = '')
|
public function belongsToMany($model, $localKey = '', $foreignKey = '')
|
||||||
{
|
{
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
|
|||||||
@@ -1814,7 +1814,7 @@ abstract class Driver
|
|||||||
public function update(array $data)
|
public function update(array $data)
|
||||||
{
|
{
|
||||||
$options = $this->_parseOptions();
|
$options = $this->_parseOptions();
|
||||||
if (!isset($options['where'])) {
|
if (empty($options['where'])) {
|
||||||
$pk = $this->getTableInfo($options['table'], 'pk');
|
$pk = $this->getTableInfo($options['table'], 'pk');
|
||||||
// 如果存在主键数据 则自动作为更新条件
|
// 如果存在主键数据 则自动作为更新条件
|
||||||
if (is_string($pk) && isset($data[$pk])) {
|
if (is_string($pk) && isset($data[$pk])) {
|
||||||
|
|||||||
Reference in New Issue
Block a user