PHP;">
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Database\QueryException;
use App\Wiki;
class TestController extends Controller
{
//用DB facade的事务方法控制 查询语句构建器的事务
public function storeWiki(Request $request)
{
DB::beginTransaction();
try {
$tagIds = explode(',',$request->get('tag_id'));
$wiki_id = DB::table('wiki')->insertGetId([
'title' => $request->get('title'),'content' => $request->get('content')
]);
$relationData = [];
foreach($tagIds as $tagId) {
$data = ['wiki_id' => $wiki_id,'tag_id' => $tagId];
$relationData[] = $data;
}
DB::table('wiki_tag_rel')->insert($relationData);
DB::commit();
} catch(\Illuminate\Database\QueryException $ex) {
DB::rollback();
return \Response::json(['status' => 'error','error_msg' => 'Failed,please contact supervisor']);
}
return \Response::json(['status' => 'ok']);
}
//用DB facade的事务方法控制 Eloquent ORM的事务
public function createWiki(array $data)
{
DB::beginTransaction();
try {
$tagIds = explode(',$data['tag_id']);
$newWiki = Wiki::create([
'title' => $data['title'],'content' => $data['content']
]);
//Wiki和Tag两个Model使用了belongsToMany建立了多对多的关系
//通过attach方法来附加wiki和tag的关系(写入中间表)
$newWiki->tags()->attach($tagIds);
DB::commit();
} catch(QueryException $ex) {
DB::rollback();
return \Response::json(['status' => 'error',please contact supervisor']);
}
return \Response::json(['status' => 'ok']);
}
}
@H_