[英]How do I get a node by its path_alias? And a path_alias by a node?
I'm trying to get raw data from a Drupal 9 install and I'm just looking for plain SQL to get a node by its path alias:我正在尝试从 Drupal 9 安装中获取原始数据,而我只是在寻找普通的 SQL 以通过其路径别名获取节点:
+--------+-------------+--------------------------------------+----------+-------------+-------------------+--------+
| id | revision_id | uuid | langcode | path | alias | status |
+--------+-------------+--------------------------------------+----------+-------------+-------------------+--------+
| 222385 | 185331 | 1086ef60-2dd5-4fce-a8b4-1fe4eb9fe5af | und | /node/25077 | /category/hello | 1 |
+--------+-------------+--------------------------------------+----------+-------------+-------------------+--------+
What I'm not sure of is how the path_alias
relates to the node.我不确定path_alias
与节点的关系。 How do I get a node by its path and also the path by node?如何通过路径获取节点以及通过节点获取路径? Do one of those ids relate to a pivot table like:这些 id 之一是否与 pivot 表相关,例如:
path_alias->pivot(id)->node? path_alias->pivot(id)->node?
If so what relational table is that?如果是这样,那是什么关系表?
I'm just looking for raw:我只是在寻找原始的:
SELECT * FROM node WHERE [id] = 'this-id-from route alias';
I have tried using the path_alias uuid:我尝试使用 path_alias uuid:
SELECT *
FROM node
WHERE uuid = '1086ef60-2dd5-4fce-a8b4-1fe4eb9fe5af';
With no success.没有成功。 I'm not sure what the relation is between the two when I know for certain there is one.当我确定有一个时,我不确定两者之间的关系是什么。
try this solution.试试这个解决方案。
All Entries所有参赛作品
SELECT node.nid, path_alias.path, path_alias.alias FROM `node`
LEFT JOIN path_alias ON CONCAT('/node/', node.nid) = path_alias.path;
Results结果
+-----+---------+-------------------------+
| nid | path | alias |
+-----+---------+-------------------------+
| 1 | /node/1 | /basic-page/test-page-1 |
| 2 | /node/2 | /basic-page/test-page-2 |
| 3 | /node/3 | /article/test-page-3 |
| 4 | /node/4 | /article/test-page-4 |
| 5 | NULL | NULL |
+-----+---------+-------------------------+
Search by Node ID按节点 ID 搜索
SELECT node.nid, path_alias.path, path_alias.alias FROM `node`
LEFT JOIN path_alias ON CONCAT('/node/', node.nid) = path_alias.path
WHERE node.nid = 2;
Results结果
+-----+---------+-------------------------+
| nid | path | alias |
+-----+---------+-------------------------+
| 2 | /node/2 | /basic-page/test-page-2 |
+-----+---------+-------------------------+
Search by Alias按别名搜索
SELECT node.nid, path_alias.path, path_alias.alias FROM `node`
LEFT JOIN path_alias ON CONCAT('/node/', node.nid) = path_alias.path
WHERE path_alias.alias = '/article/test-page-4';
Results结果
+-----+---------+-------------------------+
| nid | path | alias |
+-----+---------+-------------------------+
| 4 | /node/4 | /article/test-page-4 |
+-----+---------+-------------------------+
PS: NID 5 shows a node without an path_alias entry PS:NID 5 显示没有 path_alias 条目的节点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.