53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
namespace catcher;
|
|
|
|
use think\db\Query;
|
|
|
|
class CatchQuery extends Query
|
|
{
|
|
/**
|
|
*
|
|
* @time 2020年01月13日
|
|
* @param string $model
|
|
* @param string $joinField
|
|
* @param string $currentJoinField
|
|
* @param string $type
|
|
* @param array $bind
|
|
* @return CatchQuery
|
|
*/
|
|
public function catchJoin(string $model, string $joinField, string $currentJoinField, string $type = 'INNER', array $bind = [])
|
|
{
|
|
$table = app($model)->getTable();
|
|
|
|
return $this->join($table, sprintf('%s.%s=%s.%s', $table, $joinField, $this->getTable(), $currentJoinField), $type, $bind);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @time 2020年01月13日
|
|
* @param string $model
|
|
* @param string $joinField
|
|
* @param string $currentJoinField
|
|
* @param array $bind
|
|
* @return CatchQuery
|
|
*/
|
|
public function catchLeftJoin(string $model, string $joinField, string $currentJoinField, array $bind = [])
|
|
{
|
|
return $this->catchJoin($model, $joinField, $currentJoinField, 'LEFT', $bind);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @time 2020年01月13日
|
|
* @param string $model
|
|
* @param string $joinField
|
|
* @param string $currentJoinField
|
|
* @param array $bind
|
|
* @return CatchQuery
|
|
*/
|
|
public function catchRightJoin(string $model, string $joinField, string $currentJoinField, array $bind = [])
|
|
{
|
|
return $this->catchJoin($model, $joinField, $currentJoinField, 'RIGHT', $bind);
|
|
}
|
|
}
|