php - 具有两种类型标志的表上的 Laravel 关系

标签 php mysql laravel laravel-5 eloquent

我有两张 table

产品用户

这两个对象在表格中都有与之关联的图像

图片

图像表的架构是

id |图像ID |资源 ID |标志

1 | 567575 | 1 |用户

2 | 423423 | 423423 1 |产品

根据此标志,我正在识别它是用户图像还是产品图像。

如果我需要立即加载用户图像,该怎么做?

用户模型

<?php

namespace App\Entities;

use Illuminate\Database\Eloquent\Model;

class User extends Model implements Transformable
{
    use TransformableTrait;
    protected $table      = 'users';
    protected $primaryKey = 'users_id';
    public function images()
    {
        return $this->hasMany('App\Entities\Image','resource_id');
    }
}

产品型号

<?php

namespace App\Entities;

use Illuminate\Database\Eloquent\Model;

class Product extends Model implements Transformable
{
    use TransformableTrait;
    protected $table      = 'products';
    protected $primaryKey = 'products_id';
    public function images()
    {
        return $this->hasMany('App\Entities\Image','resource_id');
    }
}

图像模型

<?php

    namespace App\Entities;

    use Illuminate\Database\Eloquent\Model;

    class Image extends Model implements Transformable
    {
        use TransformableTrait;
        protected $table      = 'images';
        protected $primaryKey = 'images_id';
        public function products()
        {
            return $this->hasOne('App\Entities\Product','products_id');
        }
       public function users()
        {
            return $this->hasOne('App\Entities\User','users_id');
        }
    }

有没有办法可以在 images() 的关系函数中传递一个标志,以便它根据标志获取记录?

请大家帮忙。

最佳答案

您可以尝试在 images() 方法中添加条件:

<?php

namespace App\Entities;

use Illuminate\Database\Eloquent\Model;

class User extends Model implements Transformable
{
    use TransformableTrait;
    protected $table      = 'users';
    protected $primaryKey = 'users_id';

    public function images($filtered=false)
    {
        if ($filtered) {
            return $this->hasMany('App\Entities\Image','resource_id')->where('flag','user');
        }
        return $this->hasMany('App\Entities\Image','resource_id');
    }
}

并尝试对您的产品模型使用相同的逻辑

关于php - 具有两种类型标志的表上的 Laravel 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057540/

相关文章:

php - 如何按值对 SQL 行进行排序?

mysql - 无法将值插入数据库

laravel - 如何在 Laravel 5.2 中定义不带参数的策略方法?

php - Laravel-5.5:为什么我的验证器代码不起作用?

php - 如何从 php 进行的 SQL 查询中获取值?

PHP检查时间范围是否在一个时间范围内

mysql:从两者中选择最有效的查询

php - 检查某物是否为数组

javascript - onclick() 在表中不起作用

php - 如何在 Laravel 4 中使用 RESTful 实现到 Controller 的命名路由?