我有两张 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/