1. RPC服务端:
(1). app\Rpc\Lib\ICourse.php:
namespace App\Rpc\Lib;
interface ICourse {
public function list($size);
public function get($id);
}
(2). app\Rpc\Service\CourseService.php:
namespace App\Rpc\Service;
use App\Models\CourseMain;
use App\Models\CourseMetas;
use App\Models\CourseModel;
use App\Rpc\Lib\ICourse;
use Swoft\Rpc\Server\Annotation\Mapping\Service;
/**
* @Service()
*/
class CourseService implements ICourse {
public function list($size)
{
return ["list"];
}
public function get($id)
{
// course_main课程主表
$main = CourseMain::find($id);
// course_meta课程元信息表
$mate = CourseMetas::where('course_id', $id)->get();
$model = new CourseModel();
// 通过CourseModel将主表与元信息表关联在一起
$model->setCourseMain($main);
$model->setCourseMetas($mate);
return $model->toArray();
}
}
注:
①. 没有@Service()注解,会提示"Route(1.0-App\Rpc\Lib\ICourse) is not founded!".
(3). swoft提供了内置命令帮助快速生成实体类:
php bin/swoft entity:create --table=course_main,course_metas --path=@app/Models
注:
①. --path表示放到哪个位置.
②. app\bean.php中设置好"db"选项的address、prot、user、password、etc...
③. 执行命令会连接数据库,并检查表是否存在.
④. 存在则创建文件CourseMain.php、CourseMetas.php,会把所有的字段设置为private,并且自动设置get、set方法.