Silverstripe在选择后未保存到对象
我想在选择带有筛选器的对象后插入数据库 这是我的密码:Silverstripe在选择后未保存到对象,silverstripe,Silverstripe,我想在选择带有筛选器的对象后插入数据库 这是我的密码: $dayMealType = $newCustomer->Diets()->first()->DietMealPlan()->first()->Days()->filter('Order',$request->postVar('updateData')['dayNr'])->first()->DayMealType()->filter("MealTypeID",$reque
$dayMealType = $newCustomer->Diets()->first()->DietMealPlan()->first()->Days()->filter('Order',$request->postVar('updateData')['dayNr'])->first()->DayMealType()->filter("MealTypeID",$request->postVar('updateData')['MealTypeId'])->first()->Foods();
$food_tmp = new FoodMealPlan();
$food_tmp->Carbohydrates = $request->postVar('updateData')['carbohydrates'];
$dayMealType->add($food_tmp);
$dayMealType->write();
选择起作用,并返回如下对象:
object(ManyManyList)#102 (16) {
["joinTable":protected]=>
string(17) "DayMealType_Foods"
["localKey":protected]=>
string(14) "FoodMealPlanID"
["foreignKey":protected]=>
string(13) "DayMealTypeID"
["extraFields":protected]=>
array(0) {
}
["_compositeExtraFields":protected]=>
array(0) {
}
["dataClass":protected]=>
string(12) "FoodMealPlan"
["dataQuery":protected]=>
object(DataQuery)#98 (8) {
["dataClass":protected]=>
string(12) "FoodMealPlan"
["query":protected]=>
object(SQLQuery)#97 (12) {
["isDelete":protected]=>
bool(false)
["select":protected]=>
array(0) {
}
["groupby":protected]=>
array(0) {
}
["having":protected]=>
array(0) {
}
["distinct":protected]=>
bool(true)
["orderby":protected]=>
array(0) {
}
["limit":protected]=>
NULL
["where":protected]=>
array(1) {
[0]=>
array(1) {
[""DayMealType_Foods"."DayMealTypeID" = ?"]=>
array(1) {
[0]=>
int(26810)
}
}
}
["connective":protected]=>
string(3) "AND"
["from":protected]=>
array(2) {
["FoodMealPlan"]=>
string(14) ""FoodMealPlan""
["DayMealType_Foods"]=>
array(5) {
["type"]=>
string(5) "INNER"
["table"]=>
string(17) "DayMealType_Foods"
["filter"]=>
array(1) {
[0]=>
string(58) ""DayMealType_Foods"."FoodMealPlanID" = "FoodMealPlan"."ID""
}
["order"]=>
int(20)
["parameters"]=>
array(0) {
}
}
}
["replacementsOld":protected]=>
array(0) {
}
["replacementsNew":protected]=>
array(0) {
}
}
["collidingFields":protected]=>
array(0) {
}
["queriedColumns":"DataQuery":private]=>
NULL
["queryFinalised":"DataQuery":private]=>
bool(false)
["querySubclasses":protected]=>
bool(true)
["filterByClassName":protected]=>
bool(true)
["queryParams":"DataQuery":private]=>
array(3) {
["Component.ExtraFields"]=>
array(0) {
}
["Foreign.ID"]=>
int(26810)
["Foreign.Filter"]=>
array(1) {
[""DayMealType_Foods"."DayMealTypeID""]=>
int(26810)
}
}
}
["model":protected]=>
object(DataModel)#3 (1) {
["customDataLists":protected]=>
array(0) {
}
}
["inAlterDataQueryCall":protected]=>
bool(false)
["failover":protected]=>
NULL
["customisedObject":protected]=>
NULL
["objCache":"ViewableData":private]=>
array(0) {
}
["class"]=>
string(12) "ManyManyList"
["extension_instances":protected]=>
array(0) {
}
["beforeExtendCallbacks":protected]=>
array(0) {
}
["afterExtendCallbacks":protected]=>
array(0) {
}
}
关于食物的课程是这样的:
class DayMealType extends DataObject
{
private static $db = array(
'Calories' => 'Int',
'Carbohydrates' => 'Int',
'Proteins' => 'Int',
'Lipids' => 'Int',
'Price' => 'Decimal'
);
private static $has_one = array(
"MealType" => "MealTypeDetails",
"DayDietMealPlan" => "DayDietMealPlan"
);
private static $many_many = array(
"Foods" => "FoodMealPlan"
);
private static $casting = array(
'FoodsList' => 'HTMLText'
);
函数write()后返回一个错误
它不会写入数据库。在添加关系之前,需要将
FoodMealPlan
保存到数据库中
$food\u tmp=new FoodMealPlan();
$food_tmp->carboydes=$request->postVar('updateData')['carboydes'];
$food_tmp->write();//保存到数据库
$dayMealType->add($food\u tmp);
$dayMealType->write();
参考资料:错误是什么?它可以工作..谢谢..我会更新问题中的代码..我应该删除它吗?@GorgE\u MirO您不必更新问题,也不要删除它:-)也许它会帮助其他人在将来遇到类似问题。如果我的答案有效,你可以认为它是正确的。