本文整理汇总了PHP中Nette\Database\Table\Selection::getPrimary方法的典型用法代码示例。如果您正苦于以下问题:PHP Selection::getPrimary方法的具体用法?PHP Selection::getPrimary怎么用?PHP Selection::getPrimary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Nette\Database\Table\Selection
的用法示例。
在下文中一共展示了Selection::getPrimary方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getCount
/**
* @return int
*/
public function getCount()
{
if ($this->count === NULL) {
$column = !$this->source->getPrimary(FALSE) ? '*' : $this->source->getPrimary();
$this->count = $this->source->count($column);
}
return $this->count;
}
示例2: getCount
/**
* Get count of data
* @return int
*/
public function getCount()
{
try {
$primary = $this->data_source->getPrimary();
} catch (\LogicException $e) {
return $this->data_source->count('*');
}
return $this->data_source->count($this->data_source->getName() . '.' . (is_array($primary) ? reset($primary) : $primary));
}
示例3: access
/**
* @internal
*/
public function access($key, $cache = TRUE)
{
if ($this->table->getConnection()->getCache() && !isset($this->modified[$key]) && $this->table->access($key, $cache)) {
$id = isset($this->data[$this->table->getPrimary()]) ? $this->data[$this->table->getPrimary()] : $this->data;
$this->data = $this->table[$id]->data;
}
}
示例4: related
/**
* Returns referencing rows.
* @param string
* @param string
* @return GroupedSelection
*/
public function related($key, $throughColumn = NULL)
{
$groupedSelection = $this->table->getReferencingTable($key, $throughColumn, $this[$this->table->getPrimary()]);
if (!$groupedSelection) {
throw new Nette\MemberAccessException("No reference found for \${$this->table->name}->related({$key}).");
}
return $groupedSelection;
}
示例5: related
/**
* Returns referencing rows.
* @param string
* @param string
* @return GroupedSelection
*/
public function related($key, $throughColumn = NULL)
{
if (strpos($key, '.') !== FALSE) {
list($key, $throughColumn) = explode('.', $key);
} elseif (!$throughColumn) {
list($key, $throughColumn) = $this->table->getConnection()->getDatabaseReflection()->getHasManyReference($this->table->getName(), $key);
}
return $this->table->getReferencingTable($key, $throughColumn, $this[$this->table->getPrimary()]);
}
示例6: update
/**
* Updates row.
* @param array|\Traversable (column => value)
* @return bool
*/
public function update($data)
{
if ($data instanceof \Traversable) {
$data = iterator_to_array($data);
}
$primary = $this->getPrimary();
if (!is_array($primary)) {
$primary = [$this->table->getPrimary() => $primary];
}
$selection = $this->table->createSelectionInstance()->wherePrimary($primary);
if ($selection->update($data)) {
if ($tmp = array_intersect_key($data, $primary)) {
$selection = $this->table->createSelectionInstance()->wherePrimary($tmp + $primary);
}
$selection->select('*');
if (($row = $selection->fetch()) === FALSE) {
throw new Nette\InvalidStateException('Database refetch failed; row does not exist!');
}
$this->data = $row->data;
return TRUE;
} else {
return FALSE;
}
}
示例7: delete
/**
* Deletes row.
*
* @return int number of affected rows or FALSE in case of an error
*/
public function delete()
{
return $this->table->getConnection()->table($this->table->getName())->where($this->table->getPrimary(), $this[$this->table->getPrimary()])->delete();
}
示例8: getPrimary
/**
* @param bool
* @return string|array|NULL
*
* @throws \LogicException
*/
public function getPrimary($need = TRUE)
{
return $this->selection->getPrimary($need);
}