如何访问Laravel中的Pivot?

时间:2018-04-09 10:30:10

标签: php laravel

我在访问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: []
        }
      ]

1 个答案:

答案 0 :(得分:1)

首先,正如我在这里看到的那样,您在枢轴表中有很多列,例如date_begindate_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