所以正如标题所说,我怎么知道一个Model的字段是否是Laravel中的外键?
假设我有一个名为show_type_id的FK列和一个名为Event的模型,我想知道是否有一个函数给出了模型类或模型表,如果是,命名字段返回true,如果不是,则返回false。
...
$model = Event:class; // or Event::getTable();
$isFK = isFK('show_type_id', $model);
...
编辑
感谢@piscator,这是工作:
use Illuminate\Support\Facades\Schema;
function isFK(string $table, string $column): bool
{
$fkColumns = Schema::getConnection()
->getDoctrineSchemaManager()
->listTableForeignKeys($table);
$fkColumns = collect($fkColumns);
return $fkColumns->map->getColumns()->flatten()->search($column) !== FALSE;
}
2条答案
按热度按时间whitzsjs1#
假设你的表名是“events”,试试这个:
这将返回
Doctrine\DBAL\Schema\ForeignKeyConstraint
对象。有了这些数据,你可以像这样写
isFK
方法:t1rydlwq2#
我创建了这个Trait来用于我的迁移: