我只有两张桌子
GALLARIES AND MEDIA
在GALLARIES表id,title,venueId中,我保存了特定场地的gallary文件夹名称。 在MEDIA表中我有id,imagepath,is_thumb(0或1),gallery_Id
我想做的是当我设置is_thumb_image(1)然后我调用了两个函数
未设置图像的第1个全部使用gallery_id,并在我为特定图像设置is_thumb_image的第二个函数之后。
是否可以仅调用一个函数并执行这两个功能。
这是我的控制器代码。
$albumId = $request->album_id; //table galleries id - album name
if($request->is_thumb_image == "true") {
$media1->UnsetThumbImage($albumId); // first unset thumb_image
$media->setThumbImage($media->id); // call for set thumb_image
} else {
$request->is_banner_image = false;
}
这是我的模型功能
public function setThumbImage($mediaId) {
try {
DB::table('media')
->where('id', $mediaId)
->update(['is_thumb_image' => 1]);
$this->is_thumb_image = 1;
} catch (\Exception $ex) {
echo $ex->getMessage();
dd($ex->getTraceAsString());
}
}
public function UnsetThumbImage($albumid) {
DB::table('media')
->where('gallery_id', $albumid)
->update(['is_thumb_image' => 0]);
$this->is_thumb_image = 1;
}
我怎样才能只调用一个函数。
答案 0 :(得分:1)
您可以使用CASE with MySQL更新各种条件。您需要使用raw query与Laravel一起使用我相信。
类似的东西:
UPDATE media
SET is_thumb_image = CASE
WHEN id = $mediaId THEN 1
WHEN gallery_id = $albumId THEN 0
END
答案 1 :(得分:0)
为此您需要: 指定它将是哪一列。但最佳做法是以不同的方法执行此操作,因为它们具有不同的作业和列操作。
$this->setThumbImage('id', $id);
$this->setThumbImage('gallery_id', $id);
根据您的要求传递您需要的东西。
public function setThumbImage($id, $field) {
DB::table('media')
->where("$field", $id)
->update(['is_thumb_image' => 0]);
$this->is_thumb_image = 1;
}