【发布时间】:2019-04-28 07:32:57
【问题描述】:
我有两个型号 Member 和 Saving
Member('id','name')
Saving('id','member_id','amount','month')
我必须限制在给定月份保存成员的重复输入。
会员.php
class Member extends Model
{
protected $fillable=['name','address','phone'];
public function loan()
{
return $this->hasOne(Loan::class,'member_id','id');
}
public function savings()
{
return $this->hasMany(Saving::class,'member_id','id');
}
}
Saving.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Saving extends Model
{
protected $fillable=['amount','month','member_id'];
public function member()
{
return $this->belongsTo('App\Member','member_id','id');
}
}
是否可以使用模型或控制器中的函数来实现限制? 编辑: 这就是我尝试的方式。 SavingController.php
public function addSaving(Request $request){
if($request->isMethod('get')){
$memberData = Member::all();
return view($this->_pagePath.'saving.addsaving',compact('memberData'));
//return redirect()->back();
}
if($request->isMethod('post')){
$this->validate($request,[
'amount' => 'required',
'month' => 'required'
]);
$data['amount'] = $request->amount;
$data['month'] = $request->month;
$data['member_id']= $request->name;
$member= Member::find(1);
if($member->savings()->where('month',$request->month)->exists())
{
return 'Savings for this month are already added.';
}
else
{
if(DB::table('savings')->insert($data)){
return redirect()->route('saving')->with('success','data was successfuly inserted');
}
}
}
}
【问题讨论】:
-
month字段的类型是什么?是date还是只是一个数字? -
return $this->hasMany(Saving::class,'member_id','id')->where('month',$value);您可以将 where 子句链接到关系方法
-
这只是枚举值@nakov
-
@AhmedAboud 你能帮我完成吗?
标签: database laravel eloquent criteria