gpt4 book ai didi

php - laravel 模型、类名、表名和目录结构最佳实践

转载 作者:行者123 更新时间:2023-12-02 06:35:01 25 4
gpt4 key购买 nike

我想知道在 eloquent/laravel 4.1 模型中创建以下表格和关系的最佳实践是什么。

  • 表名 magazines带字段 id, title
  • 表名 magazine_issues带字段 id, title, magazine_id
  • 表名 magazine_issue_articles带字段 id, title, body, magazine_issue_id

  • 我需要文件/目录结构以及所有类和文件的命名,因为我真的很困惑,例如我应该创建一个名为 magazines 的目录吗?并放置 Issue.php文件在那里,像这样的文章?类本身的名称应该是什么?

    先感谢您。

    编辑

    我需要将它们放在子文件夹中,因为这样会更便携。问题是...
    将有一个名为 magazineIssue 的类(表名为 magazine_issues)将被自动加载并从名为 Issue.php 的文件中注册。在名为 Magazine/ 的目录中?

    我希望你不会像我一样困惑:(

    最佳答案

    如果你想创造像 Taylor Otwell 一样的想法,并且“核心”试图教人们在 Laravel 中做事,这是一个好的开始:

    您的文件可以组织为

    ├── app
    │   ├── Publishing
    │   │   ├── Models
    │   │   │   ├── Magazine
    │   │   │   │   ├── Magazine.php
    │   │   │   │   ├── Issue.php
    │   │   │   │   ├── Article.php
    │   │   ├── BaseModel.php
    │   │   ├── Repositories
    │   │   │   ├── MagazineRepository.php

    配置 PSR-0 或 PSR-4(更好)来自动加载你的类:
    "psr-0": {
    "Publishing": "app/"
    },

    创建命名空间的 BaseModel:
    <?php namespace Publishing\Models

    use Eloquent;

    class BaseModel extends Eloquent {

    }

    根据您的源代码树创建命名空间模型:
    <?php namespace Publishing\Models\Magazine

    use Publishing\Models\BaseModel;

    class Magazine extends BaseModel {

    protected $table = 'magazines';

    }

    <?php namespace Publishing\Models\Magazine

    use Publishing\Models\BaseModel;

    class Issue extends BaseModel {

    protected $table = 'magazines_issues';

    }

    <?php namespace Publishing\Models\Magazine

    use Publishing\Models\BaseModel;

    class Article extends BaseModel {

    protected $table = 'magazines_issues_articles';

    }

    您可能还想创建一个 MagazineRepository 类,以简化对您的杂志域的访问:
    <?php namespace Publishing\Repositories;

    use Publishing\Models\Magazine\Magazine;
    use Publishing\Models\Magazine\Issue;
    use Publishing\Models\Magazine\Article;

    class MagazineRepository implements DataRepositoryInterface {

    private $state;

    public function __construct(
    Magazine $magazine,
    Issue $issue,
    Article $article
    )
    {
    $this->magazine = $magazine;
    $this->issue = $issue;
    $this->article = $article;
    }

    public function getAll()
    {
    return $this->magazine->all();
    }

    public function findArticle($articleId)
    {
    return $this->article->find($articleId);
    }

    public function getByArticle($articleId)
    {
    return $this->findArticle($articleId)->magazine;
    }

    }

    关于php - laravel 模型、类名、表名和目录结构最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884810/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com