【发布时间】:2016-08-02 16:05:56
【问题描述】:
我想在laravel中更新一个产品,但是不能正常工作,
我的 Controller 的更新方法是这样的:
public function updateProduct(Request $request)
{
# Get input values
$data = $request->all();
$productID = $data['id'];
$product = Product::find($productID);
$product->fill($data);
# Validate input
$validator = Validator::make($request->all(), Product::$rules);
if ($product->save())
{
# save language selection
$lsCounter = 0;
$langSelecName = $request->input('language');
$langSelecFile = $request->file('language');
if ($langSelecName)
{
$projectPath = $dProjectPath . "languages";
foreach ($langSelecName as $langSelecNameKey => $langSelecNameValue)
{
if ($langSelecFile[$lsCounter]['input_vid_lang'] != null)
{
$langVidFileName = $langSelecFile[$lsCounter]['input_vid_lang']->getClientOriginalName();
$languages = new Language();
$languages['short_name'] = $langSelecNameValue;
$languages['input_video'] = $projectLangPath . '\\' . $langVidFileName;
$languages->product()->associate($product);
$langData = [
'languagesShortName' => $languages['short_name'],
'languagesInputVideo' => $languages['input_video']
];
$intProductID = intval($productID);
$findLangId = $languages->find($intProductID);
$findLangId->fill($langData);
if ($languages->save())
{
$langSelecFile[$lsCounter]['input_vid_lang']->move($projectLangPath, $langVidFileName);
}
}
$lsCounter++;
}
}
} else {
return redirect()->route('editProduct', $productID)->with('message', 'Error')->withInput();
}
我尝试更新后收到以下错误,错误如下:
在 null 上调用成员函数 fill()
它指向这一行:
$findLangId->fill($langData);
感谢您的帮助,谢谢。
编辑
好吧,人们说$intProductRomID 为空,但如果我 dd($intProductRomID),我会得到正确的产品 ID。
【问题讨论】:
-
可以肯定 $findLangId 为空,因为关于它的行没有返回任何结果。
-
@Josh Rumbut 但是如果我返回 $languages 和 $intProductRomID 我会得到一些结果,你能告诉我你将如何解决这个问题
-
标题不正确!您正尝试在
Null上致电fill(),就像null->fill() -
@zorx 我的编辑不好
标签: php database laravel model-view-controller