简体   繁体   English

如何通过 path_alias 获取节点? 还有一个节点的path_alias?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM