注释完善

This commit is contained in:
thinkphp
2016-04-10 10:37:06 +08:00
parent 6c406e208e
commit 8b747500b3
2 changed files with 61 additions and 19 deletions

View File

@@ -333,7 +333,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
* 判断一个字段名是否为主键字段
* @access public
* @param string $key 名称
* @return void
* @return bool
*/
protected function isPk($key)
{
@@ -392,11 +392,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
}
}
$db = self::db();
if (!empty($where)) {
$db->where($where);
}
$result = $db->update($this->data);
$result = self::db()->where($where)->update($this->data);
// 更新回调
$this->trigger('after_update', $this);
@@ -501,7 +497,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
/**
* 自动验证当前数据对象值
* @access public
* @return void
* @return bool
*/
public function validateData()
{
@@ -596,10 +592,10 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
* @param array $data 数据数组
* @return integer
*/
public static function update($data = [])
public static function update($data = [], $where = [])
{
$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
* @param string|Closure $name 命名范围名称 逗号分隔
* @return Db
* @return Model
*/
public static function scope($name, $params = [])
{
@@ -683,7 +679,12 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
return $model;
}
// 解析模型的完整命名空间
/**
* 解析模型的完整命名空间
* @access public
* @param string $model 模型名(或者完整类名)
* @return string
*/
protected function parseModel($model)
{
if (false === strpos($model, '\\')) {
@@ -695,7 +696,12 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
return $model;
}
// 查询当前模型的关联数据
/**
* 查询当前模型的关联数据
* @access public
* @param string|array $relations 关联名
* @return Model
*/
public function relation($relations)
{
if (is_string($relations)) {
@@ -707,20 +713,27 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
return $this;
}
// 预载入关联查询
/**
* 预载入关联查询 返回数据集
* @access public
* @param array $resultSet 数据集
* @param string $relation 关联名
* @return array
*/
public function eagerly($resultSet, $relation)
{
$relations = explode(',', $relation);
// 获取关联外键列表
foreach ($relations as $relation) {
$range = [];
$data = [];
$model = $this->$relation();
list($type, $foreignKey, $localKey) = $this->relation;
foreach ($resultSet as $result) {
// 获取关联外键列表
$range[] = $result->$localKey;
}
// 预载入关联查询
$list = $model::where($foreignKey, 'in', $range)->select();
switch ($type) {
case self::HAS_ONE:
@@ -736,6 +749,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
}
break;
}
// 关联数据封装
foreach ($resultSet as &$result) {
if (isset($data[$result->$localKey])) {
$result->$relation = $data[$result->$localKey];
@@ -746,7 +760,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
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 = '')
{
$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 = '')
{
$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 = '')
{
$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 = '')
{
$model = $this->parseModel($model);

View File

@@ -1814,7 +1814,7 @@ abstract class Driver
public function update(array $data)
{
$options = $this->_parseOptions();
if (!isset($options['where'])) {
if (empty($options['where'])) {
$pk = $this->getTableInfo($options['table'], 'pk');
// 如果存在主键数据 则自动作为更新条件
if (is_string($pk) && isset($data[$pk])) {