Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meibuyu-micro
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
without authentication
meibuyu-micro
Commits
8ae55d25
Commit
8ae55d25
authored
Feb 07, 2020
by
王源
🎧
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加repository基础文件
parent
10a3ef90
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
188 additions
and
0 deletions
+188
-0
RepositoryInterface.php
src/Repository/Contracts/RepositoryInterface.php
+27
-0
BaseRepository.php
src/Repository/Eloquent/BaseRepository.php
+161
-0
No files found.
src/Repository/Contracts/RepositoryInterface.php
0 → 100644
View file @
8ae55d25
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/7
* Time: 13:42
*/
namespace
Meibuyu\Micro\Repository\Contracts
;
interface
RepositoryInterface
{
public
function
all
(
$columns
=
array
(
'*'
));
public
function
paginate
(
$perPage
=
10
,
$columns
=
array
(
'*'
));
public
function
create
(
array
$attributes
);
public
function
update
(
array
$attributes
,
$id
);
public
function
delete
(
$id
);
public
function
find
(
$id
,
$columns
=
array
(
'*'
));
public
function
findBy
(
$field
,
$value
,
$columns
=
array
(
'*'
));
}
\ No newline at end of file
src/Repository/Eloquent/BaseRepository.php
0 → 100644
View file @
8ae55d25
<?php
/**
* Created by PhpStorm.
* User: zero
* Date: 2020/2/7
* Time: 13:47
*/
namespace
Meibuyu\Micro\Repository\Eloquent
;
use
Hyperf\DbConnection\Model\Model
;
use
Meibuyu\Micro\Exceptions\HttpResponseException
;
use
Meibuyu\Micro\Exceptions\RepositoryException
;
use
Meibuyu\Micro\Repository\Contracts\RepositoryInterface
;
use
Meibuyu\Micro\Validator\Contracts\ValidatorInterface
;
use
Psr\Container\ContainerInterface
;
abstract
class
BaseRepository
implements
RepositoryInterface
{
/**
* @var ContainerInterface
*/
private
$container
;
/**
* @var Model
*/
protected
$model
;
/**
* @var ValidatorInterface
*/
protected
$validator
;
/**
* BaseRepository constructor.
* @param ContainerInterface $container
* @throws RepositoryException
*/
public
function
__construct
(
ContainerInterface
$container
)
{
$this
->
container
=
$container
;
$this
->
makeModel
();
$this
->
makeValidator
();
}
/**
* Specify Model class name
* @return mixed
*/
abstract
public
function
model
();
/**
* Specify Validator class name
* @return null|mixed
*/
public
function
validator
()
{
return
null
;
}
/**
* @return Model
* @throws RepositoryException
*/
public
function
makeModel
()
{
$model
=
$this
->
container
->
make
(
$this
->
model
());
if
(
!
$model
instanceof
Model
)
{
throw
new
RepositoryException
(
"Class
{
$this
->
model
()
}
must be an instance of Hyperf
\\
DbConnection
\\
Model
\\
Model"
);
}
return
$this
->
model
=
$model
;
}
/**
* @param null $validator
*
* @return null|ValidatorInterface
* @throws RepositoryException
*/
public
function
makeValidator
(
$validator
=
null
)
{
$validator
=
!
is_null
(
$validator
)
?
$validator
:
$this
->
validator
();
if
(
!
is_null
(
$validator
))
{
$this
->
validator
=
$this
->
container
->
make
(
$validator
);
if
(
!
$this
->
validator
instanceof
ValidatorInterface
)
{
throw
new
RepositoryException
(
"Class
{
$validator
}
must be an instance of Meibuyu
\\
Micro
\\
Validator
\\
Contracts
\\
ValidatorInterface"
);
}
return
$this
->
validator
;
}
return
null
;
}
/**
* @param $id
* @param array $columns
* @return mixed
* @throws HttpResponseException
*/
public
function
find
(
$id
,
$columns
=
[
'*'
])
{
$model
=
$this
->
model
->
find
(
$id
,
$columns
);
if
(
!
$model
)
{
throw
new
HttpResponseException
(
'数据不存在'
);
}
return
$model
;
}
/**
* @param array $columns
* @return mixed
*/
public
function
all
(
$columns
=
[
'*'
])
{
return
$this
->
model
->
get
(
$columns
);
}
public
function
paginate
(
$perPage
=
10
,
$columns
=
[
'*'
])
{
return
$this
->
model
->
paginate
(
$perPage
,
$columns
);
}
public
function
create
(
array
$attributes
)
{
$model
=
$this
->
model
->
newInstance
(
$attributes
);
$model
->
save
();
return
$model
;
}
public
function
update
(
array
$attributes
,
$id
)
{
$model
=
$this
->
model
->
findOrFail
(
$id
);
$model
->
fill
(
$attributes
);
$model
->
save
();
return
$model
;
}
/**
* @param $id
* @return bool|null
* @throws \Exception
*/
public
function
delete
(
$id
)
{
$model
=
$this
->
find
(
$id
);
return
$model
->
delete
();
}
public
function
findBy
(
$field
,
$value
,
$columns
=
[
'*'
])
{
return
$this
->
model
->
where
(
$field
,
'='
,
$value
)
->
first
(
$columns
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment