我在访问Pivot关系时遇到了问题。
interface HelloGenerator {
public static HelloGenerator createProxy() {
// create MethodHandles.Lookup here to get access to the default methods
return Utils.createProxy(MethodHandles.lookup(), HelloGenerator.class);
}
abstract String name();
default void sayHello() {
System.out.println("Hello " + name());
}
}
public class Utils {
static <P> P createProxy(MethodHandles.Lookup lookup, Class<P> type) {
InvocationHandler handler = (proxy, method, args) -> {
if (method.isDefault()) {
// can use unreflectSpecial here, but only because MethodHandles.Lookup
// instance was created in the interface and passed through
return lookup
.unreflectSpecial(method, method.getDeclaringClass())
.bindTo(proxy)
.invokeWithArguments(args);
}
return ...; // your desired proxy behaviour
};
Object proxy = Proxy.newProxyInstance(
type.getClassLoader(), new Class<?>[] {type}, handler);
return type.cast(proxy);
}
}
我想获得枢轴值为null的orders_material
这是查询:
#relations: array:1 [
"orders_material" => Collection {#250
#items: []
}
]
答案 0 :(得分:1)
首先,正如我在这里看到的那样,您在枢轴表中有很多列,例如date_begin
和date_final
,所以在这里您需要编辑这样的关系模型:
public function orders_material()
{
return $this->belongsToMany('App\Orders', 'Orders_has_Material', 'Material_id', 'Orders_id')->withPivot('date_begin', 'date_final', 'column3');
}
要访问它们,您需要获得$material
orders
或反向。
这意味着,当你在你的查询中得到$material
时,我想要访问与该$material
相关的订单并在你的数据透视表中显示一些信息。你可以像这样访问他们(如果你的关系模型当然是正确的):
foreach($material->orders as $order)
{
echo $order->pivot->date_begin;
echo $order->pivot->date_final;
}
有关详细信息,请阅读文档many to many laravel with pivot table