首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InfyOm生成器中的关系

InfyOm生成器中的关系
EN

Stack Overflow用户
提问于 2016-10-28 19:43:57
回答 1查看 2.4K关注 0票数 0

我有新闻和NewsCategories模型,我已经为使用关系选项生成CRUD。

现在,我需要为新闻模型生成一个选择列表,以选择它所属的NewsCategory。

我知道如何在模型中这样做,但不知道如何使用存储库模式。

我在文档中看不到任何例子,所以希望能提供任何帮助。

谢谢

NewsRepository

代码语言:javascript
复制
/**
     * Configure the Model
     **/
    public function model()
    {
        return News::class;
    }

新闻模型

代码语言:javascript
复制
/**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     **/
    public function newsCategory()
    {
        return $this->belongsTo(NewsCategory::class);
    }

新闻控制器

代码语言:javascript
复制
/**
     * Show the form for creating a new News.
     *
     * @return Response
     */
    public function create()
    {
        return view('news.create');
    }

    /**
     * Store a newly created News in storage.
     *
     * @param CreateNewsRequest $request
     *
     * @return Response
     */
    public function store(CreateNewsRequest $request)
    {
        $input = $request->all();

        $news = $this->newsRepository->create($input);

        Flash::success('News saved successfully.');

        return redirect(route('news.index'));
    }
EN

回答 1

Stack Overflow用户

发布于 2016-10-29 22:35:20

如果您的存储库扩展了InfyOm\Generator\通用\BaseRepository。存储库应该自行更新模型关系。只需用正确的键将关系值与其他输入一起传递。

但是,对于删除和读取(让我们称之为操作),您需要查询您的数据。

您可以使用存储库方法、范围查询或条件类来实现这一点。(并调用这些过滤器)。

  1. 存储库方法: //在您的控制器//某些存储库过滤方法$this->存储库->其中this(‘新闻组’,函数($query){.});$this->存储库->隐藏(‘field_to_hide’);. //某些操作:删除、全部或findWhere.$this->存储库->delete();
  2. 范围查询是回调,它在模型上应用了一些查询,并将其返回。(与接受并返回数据库的雄辩范围不同) >存储库->作用域查询(函数($model){返回$model->where(.);};或您//某些操作:删除、更新或findWhere.$this->存储库->delete();
  3. 标准方法:您将创建一个负责查询的类。对于简单的用例来说,这是过分的。 //在控制器$this->存储库->pushCriteria(新的NewsBelongingToCategory ( $group_id ))中;// App\Criteria\NewsBelongingToCategory.php类NewsBelongingToCategory实现CriteriaInterface {私有$group_id;公共函数__construct($group_id){ $this->group_id = $group_id;}公共函数应用($model,NewsRepositoryInterface $repository) {$group_id= $this->group_id;$model =$model->其中this(‘this’,function ($query)使用($group_id){ $query->其中(‘group_id’,'=',$group_id);};返回$model;} //在控制器$this->存储库中>删除(); 注意,有些操作忽略特定的筛选器。例如,delete(id)update($attributes, $id)不使用条件,而lists($column, $key)则不使用作用域。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40312211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档