我想构建一个Laravel应用程序,它同时使用Web和API部件.常见的(也是我的)问题是是否使用单独的控制器.
有两种选择:
单独的控制器 Laravel API控制器结构?
使用一个控制器并检查请求类型(是Ajax,还是取决于请求链接)并返回JSON或HTML. 用于API和非API使用的Laravel资源控制器
那些拥有第一意见的人没有解释DRY问题解决方案 - 除了return语句(JSON或HTML视图)之外,web和API控制器是相同的.但由于大多数帖子建议分开控制器,我怀疑我对DRY问题解决方案一无所知.
我没有看到第二种方法的任何缺点.但是人们会这么说
如果你只使用一个控制器,你很快就会得到一个包含数千行的混乱类.不仅这不能很好地扩展,而且对你和你的队友来说也很难.
请解释第一种方法的干燥问题解决方案(单独的控制器)和第二种方法中可能存在的水下岩石(单一控制器)
请解释哪种方法更可取.
我需要监听通过诸如 DBeaver 之类的数据库管理器完成的 Postgres 表更改(CRUD),并将更新的行 id 传递给 laravel 驱动的 API enpoint。
在 Postgres 中,我创建了一个表、表的触发器以及在 postgres 端处理事件的函数
CREATE TABLE PUBLIC.TBLEXAMPLE
(
KEY1 CHARACTER VARYING(10) NOT NULL,
KEY2 CHARACTER VARYING(14) NOT NULL,
VALUE1 CHARACTER VARYING(20),
VALUE2 CHARACTER VARYING(20) NOT NULL,
CONSTRAINT TBLEXAMPLE_PKEY PRIMARY KEY (KEY1, KEY2)
);
CREATE OR REPLACE FUNCTION PUBLIC.NOTIFY() RETURNS trigger AS
$BODY$
BEGIN
PERFORM pg_notify('myevent', row_to_json(NEW)::text);
RETURN new;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100;
CREATE TRIGGER TBLEXAMPLE_AFTER
AFTER insert or update or delete
ON …Run Code Online (Sandbox Code Playgroud) 我在我的模型代码中使用以获得关系
class User extends Authenticatable
{
...
public function extensions()
{
return $this->belongsToMany(Extension::class, 'v_extension_users', 'user_uuid', 'extension_uuid');
}
...
}
Run Code Online (Sandbox Code Playgroud)
该扩展名具有现场密码隐藏.
class Extension extends Model
{
...
protected $hidden = [
'password',
];
...
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我想makeVisible密码字段.
我怎样才能做到这一点?