没有不值得去解决的问题,也没有不值得去学习的技术!

Set Up and Retrieve Self-Referencing Relations for a Model in Laravel 6

The table has two fields: original_theme_id and theme_id. The value of the original_theme_id field comes from the theme_id of another record in the same table

1. The table has two fields: original_theme_id and theme_id. The value of the original_theme_id field comes from the theme_id of another record in the same table. See Figure 1.

The table has two fields: original_theme_id and theme_id. The value of the original_theme_id field comes from the theme_id of another record in the same table
Figure 1

2. Define a one-to-one inverse relationship in the model. The code implementation is as follows:

PHP

    /**
     * 获取此主题安装所属原始的主题安装
     * @return BelongsTo
     */
    public function originalThemeInstallation()
    {
        return $this->belongsTo('Modules\ThemeStoreDB\Entities\ThemeInstallation', 'original_theme_id', 'theme_id');
    }

3. The code implementation for retrieving the relationship property and the generated SQL:

PHP

        $themeInstallation = ThemeInstallation::find(345);
        print_r($themeInstallation->originalThemeInstallation);
        exit;

SQL

select
  *
from
  `theme_installation`
where
  `theme_installation`.`theme_id` = '96b1c8b9-5b18-4760-9e26-50ab009ac011'
  and `theme_installation`.`deleted_at` is null
limit
  1

4. The printed result matches expectations.

Plaintext

Modules\ThemeStoreDB\Entities\ThemeInstallation Object
(
    [table:protected] => theme_installation
    [attributes:protected] => Array
        (
            [id] => 35
            [theme_store_theme_id] => 21
            [original_theme_id] => 
            [theme_id] => 96b1c8b9-5b18-4760-9e26-50ab009ac011
            [original_wp_theme_id] => 0
            [wp_theme_id] => 6
            [theme_name] => brooklyn
            [theme_custom_name] => brooklyn 6 2
            [type] => 1
            [role] => unpublished
            [processing] => 0
            [processing_failed] => 0
            [created_at] => 2022-07-04 02:53:29
            [updated_at] => 2022-12-09 03:04:36
            [deleted_at] => 
        )

)


关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系