Попытка создать модель Eloquent для нескольких разных таблиц.Ниже приведен мой список таблиц:
- транзакция
- транзакция201806
- транзакция201807
- транзакция201808
Модель транзакции:
class Transaction extends Model
{
protected $table = 'transaction';
public function __construct($attributes = [], $date = null) {
parent::__construct($attributes);
$date = $date ?: "";
$this->setTable("transaction$date");
}
public function Receipt(){
return $this->belongsTo('App\Receipt');
}
}
Модель квитанции:
class Receipt extends Model
{
protected $table = 'receipt';
public function transaction($date = null){
$transModel = new Transaction([], $date);
return $this->hasMany($transModel);
}
}
Контроллер:
$date = $request->date;
$newTableName = "transaction".$date;
$transModel = new Transaction([], $date);
$query = $transModel->selectRaw($newTableName.'.*, SUM('.$newTableName.'.amount) as amount')
->where($newTableName.'.user_id', $user->id)
->with('receipt.transaction')
->paginate($paginate);
Когда нет ввода, $ date = null, result-> data как ниже (это то, что я хочу):
{
"id": 2005533,
"user_id": 12,
"receipt_id": "1002767",
"amount": "10.00000000",
"type": 2,
"created_at": "2018-12-18 11:57:22",
"receipt": {
"id": 1002767,
"remark": null,
"created_at": "2018-12-18 11:57:22",
"transaction": [
{
"id": 2005532,
"user_id": 12,
"receipt_id": "1002767",
"amount": "-10.00000000",
"type": 1,
"created_at": "2018-12-18 11:57:22",
},
{
"id": 2005533,
"user_id": 12,
"receipt_id": "1002767",
"amount": "10.00000000",
"type": 2,
"created_at": "2018-12-18 11:57:22",
}
]
}
},
Когда ввод 201806, $ date = "201806", результат:
{
"id": 152,
"user_id": 12,
"receipt_id": "100",
"amount": "10.00000000",
"type": 2,
"created_at": "2018-06-10 11:57:22",
"receipt": {
"id": 100,
"remark": null,
"created_at": "2018-06-10 11:57:22",
"transaction": []
}
},
Проблема, с которой я сталкиваюсь сейчас, заключается в том, когда $ dateне нуль, в результате я получаю отсутствующую транзакцию для получения.Могу ли я знать, что я могу сделать, чтобы он знал, на какую таблицу он должен указывать при загрузке нескольких отношений?
Ожидаемый результат для $ date! = Null:
{
"id": 152,
"user_id": 12,
"receipt_id": "100",
"amount": "10.00000000",
"type": 2,
"created_at": "2018-06-10 11:57:22",
"receipt": {
"id": 100,
"remark": null,
"created_at": "2018-06-10 11:57:22",
"transaction": [
{
"id": 2005532,
"user_id": 12,
"receipt_id": "100",
"amount": "-10.00000000",
"type": 1,
"created_at": "2018-06-10 11:57:22",
},
{
"id": 152,
"user_id": 12,
"receipt_id": "100",
"amount": "10.00000000",
"type": 2,
"created_at": "2018-06-10 11:57:22",
}
]
}
},